如何在.NET Web应用程序中水平翻转图像

5

我需要在我的VB.net Web应用程序中水平翻转一个位图图像。

例如:

enter image description here

我已经搜索了很多,但没有找到任何简单的vb.net方法。有存在的吗?


这是另一个类似的SO问题https://dev59.com/Pm7Xa4cB1Zd3GeqPlg9U - Constanta
请参见https://dev59.com/k2025IYBdhLWcg3w1ZkL。 - nmat
抱歉,我不明白你的问题。但是,必须使用代码后台吗?你标记了你的问题为ASP.NET。 - Constanta
你说得对 - 我没有表达清楚。现在我已经澄清了。 - Urbycoz
1
鉴于这是asp.net,你最好只提供原始图像,并依赖CSS样式来让客户端为你翻转图像。参考这个链接:http://css-tricks.com/snippets/css/flip-an-image/ 这样可以节省服务器上大量的工作,从而帮助你更好地扩展并减少页面加载时间。 - Joel Coehoorn
显示剩余2条评论
1个回答

3
你需要获取图像的文件引用,将其加载为 Bitmap,然后使用 RotateFlip 方法。

http://msdn.microsoft.com/en-us/library/system.drawing.rotatefliptype.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

如果链接失效(因为微软经常这样做):

    bitmap1 = CType(Bitmap.FromFile("C:\Documents and Settings\All Users\" _
        & "Documents\My Music\music.bmp"), Bitmap)
    bitmap1.RotateFlip(RotateFlipType.RotateNoneFlipX)

您可能对Image类感兴趣(Bitmap是Image的一种)。您可以执行几乎任何简单的操作(如此操作),并且有方法可以利用3D卡进行更加疯狂的操作。您可以将其推向极致。但是,为了以高效的方式执行自定义效果,您需要学习图形矩阵。

http://msdn.microsoft.com/en-us/library/k7e7b2kd.aspx

编辑

关于问题注释中的性能问题,可能会成为一个问题。取决于像这样加载图像的频率,您可能应该缓存此结果,例如将其写入磁盘并通过路径实际请求文件(这将为您获取任何已配置的IIS缓存),或者通过在此处调用的控制器操作应用OutputCache指令等 - 有点超出了这个问题的范围。

另外,仅供记录,翻转图像相当便宜。


谢谢。这就是我正在寻找的方法。你所说的“pretty cheap”是什么意思? - Urbycoz
就CPU周期而言,这是非常便宜的 - 在有专用显卡的机器上,GPU 几乎可以瞬间完成操作 - 大部分时间都只是在数据传输中浪费。对于没有独立显卡的机器,它们通常拥有薄弱的内置 GPU,即使没有内置 GPU,也有硬件向量操作可使用底层矩阵并行执行操作。因此,对其速度感到担忧可能不是很有根据,尽管我认为性能分析始终是明智的,良好的缓存策略也是如此。 - Chris Moschini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接