Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在HTML5中在一个画布上组合两个图像_Javascript_Html_Canvas - Fatal编程技术网

Javascript 在HTML5中在一个画布上组合两个图像

Javascript 在HTML5中在一个画布上组合两个图像,javascript,html,canvas,Javascript,Html,Canvas,我正在使用HTML5画布元素。假设我有两个ImageData对象,我希望将它们组合起来,以便能够放在一个画布上。假设我不在乎这些图像如何组合。两个ImageData对象具有完全相同的像素数和形状 组合这两个图像的最佳方式是什么 我想我可以写一个for循环,迭代ImageData数组,手动组合并设置每个像素的rgba值,但我想知道是否有更好的方法?我需要这个手术尽快进行 提前感谢。如果您只是希望将一个图像叠加到另一个图像上,您可能需要执行以下操作: ctx.drawImage(image1, x,

我正在使用HTML5画布元素。假设我有两个ImageData对象,我希望将它们组合起来,以便能够放在一个画布上。假设我不在乎这些图像如何组合。两个ImageData对象具有完全相同的像素数和形状

组合这两个图像的最佳方式是什么

我想我可以写一个for循环,迭代ImageData数组,手动组合并设置每个像素的rgba值,但我想知道是否有更好的方法?我需要这个手术尽快进行


提前感谢。

如果您只是希望将一个图像叠加到另一个图像上,您可能需要执行以下操作:

ctx.drawImage(image1, x, y);
// adjust globalAlpha as needed, or skip if the image has its own transparency
ctx.globalAlpha = 0.5;
ctx.drawImage(image2, x, y);
或者,根据您追求的具体效果:

ctx.drawImage(image1, x, y);
ctx.globalCompositeOperation = "lighten"; // many other possibilities here
ctx.drawImage(image2, x, y);

这可能比通过get/putImageData方法逐像素绘制要快,不过取决于浏览器的程度。

什么是“组合”呢?你想把一个放在另一个上面,这样你就看不见了?你想把一个叠在另一个上面吗?你想把它们端对端地叠起来吗?我想把一个放在另一个上面。这些图像中的大多数像素是完全透明的。因此,如果image1的左半部分有一个黑色圆圈,image2的右半部分有一个正方形,我想将它们组合起来,这样我得到一个左边有圆圈,右边有正方形的图像。提问者说(在后面的评论中)图像像素大部分是透明的,所以我认为根本不需要设置alpha或合成操作。这是正确的。我将在第一组代码中更新注释。