使用HTML画布+Javascript优化和图像+减少文件大小
我正在做一个Chrome扩展,它会自动获取visible选项卡的屏幕截图,并将JPG下载到您的文件系统中。这一切都很好,但对于1280x720px的图像来说,图像非常大~400kb,我希望在40kb左右对其进行优化 以下是我正在使用的代码:使用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
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。我的手术室。模糊过滤一些难以压缩的高频