Javascript 如何将画布显示保存为透明PNG?
如果在中单击RunCodeSnippet,它将显示Javascript 如何将画布显示保存为透明PNG?,javascript,html,canvas,Javascript,Html,Canvas,如果在中单击RunCodeSnippet,它将显示的一个很酷的用法,您可以在其中“剪切”图像的一部分(只需将鼠标拖动到图像上“剪切”)。我只是好奇,是否有任何方法可以将生成的图像“剪切”部分保存为透明的PNG(即画布中的所有白色都是透明的) 如果有人能给我指出正确的方向(或告诉我这是不可行的),我将不胜感激。是的,有办法。使用canvascontext.getImageData获取图像原始数据数组。根据需要使用它(原始数据)(使所需的任何像素透明),然后使用context.putImageDat
的一个很酷的用法,您可以在其中“剪切”图像的一部分(只需将鼠标拖动到图像上“剪切”)。我只是好奇,是否有任何方法可以将生成的图像“剪切”部分保存为透明的PNG(即画布中的所有白色都是透明的)
如果有人能给我指出正确的方向(或告诉我这是不可行的),我将不胜感激。是的,有办法。使用canvas
context.getImageData
获取图像原始数据数组。根据需要使用它(原始数据)(使所需的任何像素透明),然后使用context.putImageData
在画布上渲染数据。然后使用var data=canvas.toDataURL(“image/png”)
获取图像数据。然后您可以这样做:image.src=data
;
使用此链接了解更多信息是的,有一种方法。使用canvas
context.getImageData
获取图像原始数据数组。根据需要使用它(原始数据)(使所需的任何像素透明),然后使用context.putImageData
在画布上渲染数据。然后使用var data=canvas.toDataURL(“image/png”)
获取图像数据。然后您可以这样做:image.src=data
;
使用此链接了解更多信息。这里有一个快速教程,演示如何裁剪和保存用户从图像中拖动的剪贴画:
- 清理画布
- 使用阵列中保存的点绘制和填充剪切区域
- 设置
。此模式将导致任何新图形仅在新绘制的像素和现有像素重叠且所有其他内容都透明的情况下显示。常用术语:新像素将“剪裁”到用户定义的剪切中,并且新像素不会出现在剪切之外context.globalCompositeOperation='source-in'
- 重新绘制图像
最后,您可以使用
var url=canvascelement.toDataURL
将裁剪后的画布图像保存到.png
dataURL中。如果您希望从此数据url获得实际图像,您可以var img=new image()
并设置img.src=url
以下是一个快速教程,展示如何裁剪和保存用户从图像中拖动的剪切部分:
- 清理画布
- 使用阵列中保存的点绘制和填充剪切区域
- 设置
。此模式将导致任何新图形仅在新绘制的像素和现有像素重叠且所有其他内容都透明的情况下显示。常用术语:新像素将“剪裁”到用户定义的剪切中,并且新像素不会出现在剪切之外context.globalCompositeOperation='source-in'
- 重新绘制图像
var url=canvascelement.toDataURL
将裁剪后的画布图像保存到.png
dataURL中。如果您希望从此数据url获得实际图像,则可以var img=new image()
并设置img.src=url