Canvas 减少了 Jpeg 的图像大小,但为什么呢?

Oky*_*kyo 4 html canvas

当我使用将 JPEG 图像绘制到 CanvasdrawImage()时,然后使用canvas.toDataURL()使其可保存在本地(用鼠标右键单击),则保存的 Jpeg 图像的文件大小减少了约 40%。仅当使用 Jpeg 时才如此。PNG、GIF(非压缩文件)会增大尺寸。我想,如果我将图像文件转换为 Base64,大小会增加约 130%。所以我认为画布元素有自己的集成压缩功能?如果是这样,我可以停用它吗?

代码如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

我不知道问题是什么?

Nei*_*eil 5

您可以将 JPEG 质量指定为 toDataURL 函数的第二个参数。Firefox 中的默认质量为 0.92 (92%)。

https://developer.mozilla.org/en/DOM/HTMLCanvasElement

  • 感谢您的快速响应,但这并不能解决问题,文件大小仍然减小!我指定的补偿质量并不重要。 (2认同)