【发布时间】:2022-01-19 13:00:21
【问题描述】:
我在画布上有一张图片,我想对其进行梯形失真。代码本身已经准备好了,但是很慢,很慢。在 i7 台式机上,约 10-20 秒内可显示 400x400 图像。但是,我想在具有最大相机分辨率的移动设备上运行它,所以我正在寻找一种更有效的方法。 目前,我的代码是这样工作的:
- 向用户请求扭曲矩形的坐标。我需要从用户那里得到正交坐标
- 我将边 a 和 c 分成 400 个部分。
- 我迭代了之前的划分,所以我取“a”边 1/400 部分的点和“c”边 1/400 部分的点。然后是 2/400 部分上的点之间的部分。等等。
- 我将刚刚生成的部分除以 400 并对其进行迭代。
- 我将点 2 中产生的行号作为“X”,将点 4 中的点作为“Y”。给定点的坐标是 Q 和 W。
- 我将原始画布上坐标“Q”和“W”处的像素绘制到目标画布上由坐标“X”和“Y”标识的位置。
有没有更有效的方法来做到这一点?
【问题讨论】:
-
起草了一个非仿射变换提案here,它甚至在 Chrome 中实现了一段时间,但不幸的是,所有图形引擎本身都不支持这种变换,它已被“停放”暂时。
标签: javascript canvas html5-canvas