当我使用drawImage()将jpeg图像绘制到画布上,然后使用canvas.toDataURL()将其保存到本地(用鼠标右键单击),则保存的jpeg图像的文件大小减少了约40%。只有在使用jpeg时才是这样。png、gif(非压缩文件)会增大大小。我想,如果我把一个图像文件转换成base64,大小会增长到大约130%。所以我认为canvas元素有自己的集成压缩功能?如果是,我可以停用它吗?
代码如下所示:

var img = new Image();

img.onload = function ()
{
var width = img.width;
var height = img.height;
context.drawImage(img, 0, 0,width,height);
document.images[0].src = canvas.toDataURL('image/jpeg');//<-size = 30,2 KB (30.990 Bytes)
}
img.src = "http://www.roomeffect.de/pageslices/RSB.jpg"; //<-original file size = 58,5 KB (59.930 Bytes)

我不知道有什么问题?

最佳答案

这不是问题。jpg是一种有损格式,没有理由期望扩展成位图的jpg(因此您可以在屏幕上看到它)与再次压缩该位图生成的新jpg的大小相同。如果要保存原始文件,请保存原始文件。

10-05 20:49
查看更多