弯曲一个以矩形开始的图像(由用户上传),最好使用 Canvas 或 JS
我正在尝试创建一个网站,该网站可以弯曲用户上传的图像,然后允许用户保存新图像。我无法弄清楚如何弯曲图像,如下面的链接所示。我可以在 Canvas 中将弯曲形状创建为纯色,但不能使用图像。
I'm trying to create a site that curves an image uploaded by a user, and then allows the user to save the new image. I'm having trouble figuring out how to curve the image as shown in the link below. I can create the curved shape as a solid color in Canvas, but not with an image.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我尝试过这样的事情。
我有一个宽度为 300、高度为 227 的源图像。我要将此图像弯曲 15 像素向下。因此,创建一个具有相同宽度和高度的画布 = imageWidth + 15 px。 IE。 227+15 = 242。
HTML:
Javascript
I tried something like this.
I have a source image having width 300 and height 227. And I am going to bend this image 15 pixel down. So create a canvas with same width and height = imageWidth + 15 px. ie. 227+15 = 242.
HTML:
Javascript
没有简单的方法可以做到这一点。您可能需要使用 Canvas 的像素级 API 自行编写转换代码。请参阅http://beej.us/blog/ 2010/02/html5s-canvas-part-ii-pixel-manipulation/ 。
您可以尝试基于网格的解决方案,而不是纯粹基于像素的解决方案。将源图像分割为映射到目标形状的较小块。然后使用纹理映射来填充细节。请参阅使用 HTML5 Canvas 进行图像处理和纹理映射?了解映射算法。您可能会在此处找到另一个算法。不过,您仍然需要找出映射坐标。
There's no simple way to do this. You might need to code the transformation yourself using the pixelwise API of Canvas. See http://beej.us/blog/2010/02/html5s-canvas-part-ii-pixel-manipulation/ .
Instead of pure pixel based solution you could try a mesh based one. Split up the source image to smaller chunks that map to the target shape. Then use texture mapping to fill in the details. See Image manipulation and texture mapping using HTML5 Canvas? for the mapping algo. You may find another algo here. You'll still need to figure out the mapping coordinates, though.