0

我的画布肯定需要这种 Photoshop 转换。我找到了这个插件,但是转换后的图像质量真的很差https://github.com/migurski/canvas-warp

感谢帮助。我真的需要这个。

4

1 回答 1

0

透视变换是非平行变换。

canvas.getContext("2d") 只允许您进行并行变换——不可能有透视图。

WebGL 是画布的 3d 上下文,具有 4x4 变换矩阵,可让您进行非并行变换。因此,您可以在 WebGL 中进行透视变换

问题是 WebGL 的浏览器采用:Chrome:是,Mozilla,Safari,Opera:可能(最小功能),IE,IOS,Android:否。

您还可以在 CSS3 中进行 x/y/z 变换。这也允许透视变换。浏览器采用更好:IE:可能,Opera:否,其他所有:是。

[编辑——好的,如果你真的需要使用canvas2D来显示透视图]

Thatcher Ulrich 创建了一个很棒的 Canvas2.5D 脚本,它使用 3x4 矩阵来进行透视数学。然后他将他的 3x4 矩阵映射到正常的 3x3 矩阵中,以将经过透视调整的图像显示到画布上。

这是他非常酷的演示:http ://tulrich.com/geekstuff/canvas/perspective.html

警告:前面有困难的数学概念......!

他的矩阵代码在演示中使用的 jsgl.js 脚本中。

于 2013-05-22T21:18:11.540 回答