小编sag*_*r38的帖子

与原始数据URI相比,javascript canvas.toDataURL更改

我正在开发一个mozilla扩展,尝试加载一个用数据URI编码的图像(PNG),在canvas元素上绘制它,最后更改一些像素值并将其保存为磁盘上的文件.

我注意到的一件奇怪的事情是,即使我没有更改图像上的任何内容,我只是在画布上绘制图像并使用canvas.toDataURL()来查看生成的内容,此编码数据与原始数据不同.

我用来看这个代码是非常基本的:

var image = new Image();
image.onload = function() {
    var canvas = document.createElement('canvas')
    canvas.width = image.width;
    canvas.height = image.height;
    canvas.getContext('2d').drawImage(image, 0, 0);
    var data = canvas.toDataURL(); // this right here is different from image.scr data!
}
image.src = "data:image/png;base64," + encodedData;
Run Code Online (Sandbox Code Playgroud)

我认为存在某种压缩或者可能与透明度有关.

我检查了文档,但找不到解释.我想我看到一些颜色被改变成其他类似的东西,这可能是搞乱我想要实现的东西(即改变一些像素值).

关于发生了什么的任何想法?

如果没有,有没有人知道是否有任何其他方法将画布图像保存到磁盘上的文件而不使用toDataURL方法?可能是一个能够以PNG二进制格式保存所有像素的XPCOM组件吗?

谢谢

javascript mozilla canvas

5
推荐指数
1
解决办法
1968
查看次数

标签 统计

canvas ×1

javascript ×1

mozilla ×1