如何在函数中使用画布图像,该函数首先操作然后将新操作的图像输出回用户
How can I use a canvas image in a function that, first manipulates then outputs the newly manipulated image back to user
到目前为止,我有一个按钮,单击该按钮时,可以使用toDataURL((方法在弹出窗口中输出画布图像,从而允许将图像另存为.png。 我还有一个按钮,单击该按钮时将获取原始用户生成的画布图像并将其显示在第二个画布上。 这两者都是在我的努力中实现的:获取原始画布图像并在操作图像并递归调用图像的函数中使用该图像,将处理后的图像输出回用户。我是js的新手,但我有OO lang的知识 - 如果我可以使用Java,我会这样做:
public CanvasImage manipulator(userImage){
do this to image;
do this to image;
return manipulatedImage; //this needs to be a save-able image (toDataURL i think)
}
我需要做什么才能使用 javaScript 通过 onClick 事件捕获此功能?我卡住了,任何建议都非常感谢。
如果您正在谈论对需要使用的图像进行每像素操作 .getImageData(x, y, width, height)
,这为您提供了包含.data
字段的对象,该字段是图像的每个像素的 RGBA 的数组,因此.data[0]
是第一个像素的 R 通道,.data[1]
是 G 通道,.data[2]
B, .data[3]
Alpha 通道,然后.data[4]
是第二个像素的 R 通道。
全部在 0-255 范围内,而不是 0-1。
您可以设置这些颜色值,也许您希望第一个像素为蓝色,然后执行此操作:
var img = Ctx.getImageData(0, 0, Canvas.width, Canvas.height);
img.data[0] = 0; // R
img.data[1] = 0; // G
img.data[2] = 255; // B
img.data[3] = 255; // A
要绘制修改后的图像数据,只需使用 Ctx.putImageData(img, x, y)
;
您的点击事件如下所示:
button.Canvas = Canvas;
button.Ctx = CanvasContext;
button.addEventListener("click", function()
{
var img = this.Ctx.getImageData(0, 0, this.Canvas.width, this.Canvas.height);
// Do something to the image data here
this.Ctx.putImageData(img, 0, 0);
}, false);
或
您可能只想将图像绘制到屏幕外的画布上,在那里执行任何您想要的操作,然后将其绘制回用户可以看到的画布。既然你说你是JS的新手,这就是你创建画布的方式:
var newCanvas = document.createElement("canvas");
var newCtx = Canvas.getContext("2d");
如果您不想,此画布将不会显示,因此只需正常使用它,当您完成图像操作后,只需将其绘制在主画布上即可。
- 通过javascript操作图像,非常简单
- 如何阻止图像移动并根据击键进行操作
- 当我在操作属性中写入页面名称时,文件图像不会上传
- 更改“将图像另存为”的操作以重定向到相应的网页
- 在web浏览器中保存操作过的SVG图像
- AngularJS,如何操作通过$resource获得的图像
- 单击图像不执行任何操作
- 如何使用滑动、缩放和裁剪在 jquery 中操作图像的大小或位置
- 如何使用jQuery检查图像URL是否为空并执行某些操作
- 离子在加载所有图像和内容时执行操作
- 使用Javascript上传图像(操作)到Facebook
- 重置操作的图像
- 如何在上传到画布后操作图像(FabricJS)
- 操作方法:将鼠标悬停在图像上并制作动画绘制一条线,说明淡出
- 客户端图像操作(裁剪)
- 纯JavaScript图像操作
- 画布中的图像操作
- 图像操作-背景位置,SRC更改和多个图像的最佳实践
- 节点画布图像操作
- 渲染图像操作哪个更快:HTML5画布元素,还是操作DOM元素? 'CSS与JS/jQuery