3

我想在我的画布上对一些图像进行像素真实的渲染。现在,我通过 Javascript 获取图像,所以我的图像是HTMLImageElement实例。我可以在 Canvas 的渲染上下文中使用drawImage. 但是,这会对图像执行抗锯齿,这是我不想要的。

似乎有一种名为 的较低级别的图像处理方法putImageData,用于对ImageData对象进行操作。此方法是否执行任何抗锯齿?如果不是,它是我正在寻找的一个很好的候选人,但我还没有找到如何将一个转换或 blitHTMLImageElement到一个ImageData实例。

任何的建议都受欢迎!

编辑:我原来的问题解决了,我不小心有一个分数坐标,这会强制抗锯齿。不过,转换为图像数据的问题仍然存在。

4

1 回答 1

1

将图像转换为 ImageData 对象的唯一方法是首先将其绘制到画布上,因此您需要创建一个临时画布,在其上绘制图像,然后从那里获取图像数据。

function imageToImageData(image) {
     var canvas = document.createElement("canvas");
     canvas.width = image.width;
     canvas.height = image.height;
     var ctx = canvas.getContext("2d");
     ctx.drawImage(image, 0, 0);
     return ctx.getImageData(0, 0, canvas.width, canvas.height);
}

但请注意,如果您将来自不同域的图像绘制到画布上,同源策略会阻止您调用 getImageData,因此这仅适用于与 document 来自同一域的图像。如果您需要从其他域绘制图像,您唯一的选择是drawImage直接为您的主画布调用上下文,确保没有会影响准确性的转换。

于 2009-09-08T16:26:02.853 回答