使用HTML画布+Javascript优化和图像+减少文件大小

使用HTML画布+Javascript优化和图像+减少文件大小,javascript,html,image,canvas,html5-canvas,Javascript,Html,Image,Canvas,Html5 Canvas,我正在做一个Chrome扩展,它会自动获取visible选项卡的屏幕截图,并将JPG下载到您的文件系统中。这一切都很好,但对于1280x720px的图像来说,图像非常大~400kb,我希望在40kb左右对其进行优化 以下是我正在使用的代码: var image = new Image(); image.onload = function() { var canvas = screenshot.content; canvas.width = image.wi

我正在做一个Chrome扩展,它会自动获取visible选项卡的屏幕截图,并将JPG下载到您的文件系统中。这一切都很好,但对于1280x720px的图像来说,图像非常大~400kb,我希望在40kb左右对其进行优化

以下是我正在使用的代码:

var image = new Image();
    image.onload = function() {
        var canvas = screenshot.content;
        canvas.width = image.width;
        canvas.height = image.height;
        var context = canvas.getContext("2d");
        context.drawImage(image, 0, 0);

        // save the image
        var link = document.createElement('a');
        link.download = shotname + ".jpg";
        link.href = screenshot.content.toDataURL();
        link.click();
        screenshot.data = '';
    };
    image.src = screenshot.data; 

如何优化图像以降低质量和文件大小?我想使用不同的质量选项,这样我就可以看到什么是可接受的用例。

您可以将url编码为jpg格式

第二个参数指定结果jpg的质量

link.href = screenshot.content.toDataURL('image/jpeg', 0.6);

您可以将url编码为jpg格式

第二个参数指定结果jpg的质量

link.href = screenshot.content.toDataURL('image/jpeg', 0.6);

您可以使用JPEG和如下质量设置:

link.href = screenshot.content.toDataURL("image/jpeg", 0.3);
质量在[0,1]范围内。如果不指定任何图像类型,默认值将为PNG,在许多情况下,PNG相对较大

请注意,在使用JPEG时,您将丢失alpha通道


此外,您可以稍微模糊图像,请参见f.ex。我的手术室。模糊过滤一些难以压缩的高频。

您可以使用JPEG和如下质量设置:

link.href = screenshot.content.toDataURL("image/jpeg", 0.3);
质量在[0,1]范围内。如果不指定任何图像类型,默认值将为PNG,在许多情况下,PNG相对较大

请注意,在使用JPEG时,您将丢失alpha通道

此外,您可以稍微模糊图像,请参见f.ex。我的手术室。模糊过滤一些难以压缩的高频