如果您点击this link中的运行代码段,它会显示<canvas>
的酷炫用法,您可以在其中“剪切”部分图片(只需拖动您的鼠标在图像上“剪切”)。我只是好奇是否有任何方法可以保存图像的最终“剪切”部分,如透明的PNG(即画布中白色的所有内容都是透明的)。
如果有人能指出我正确的方向(或告诉我这是不可行的),我会很感激。
答案 0 :(得分:0)
是的,有办法。使用canvas context.getImageData
获取图像原始数据数组。用它(原始数据)做你需要的(使所需的任何像素透明),然后使用context.putImageData
在画布上渲染数据。然后使用var data = canvas.toDataURL("image/png")
获取图像数据。然后你可以这样做:image.src = data
;
使用此链接https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData获取更多信息
答案 1 :(得分:0)
这是一个快速浏览,介绍如何裁剪&amp;保存用户拖动的图像剪切:
当用户完成切割区域的定义时:
context.globalCompositeOperation='source-in'
。此模式将导致任何新图形仅在新绘制的像素与现有像素重叠且其他所有内容均为透明的情况下显示。一般来说:新像素将被剪裁&#34;进入用户定义的剪切区域,新的像素不会出现在剪切区外。结果是图像的第二次绘制仅出现在用户定义的剪切块内。其他一切都是透明的。
最后,您可以使用var url=canvasElement.toDataURL
将裁剪的画布图像保存到.png
dataURL中。如果您想要此dataURL中的实际图片,可以var img=new Image()
并设置img.src=url
。