有灰度JPG格式吗?

时间:2018-06-24 10:09:35

标签: javascript image jpeg

将彩色JPG图像转换为灰度并将其保存回JPG时,通常可以看到文件大小至少减少20%,这似乎很自然。

问题:

  1. JPG规范中是否存在特定的“灰度”格式?我在this中看到了JPEG File Interchange Format,但不确定是否是当今使用的标准

  2. 还是“灰度JPG”通常是彩色RGB JPG,其中R value==G value==B value,因此文件大小的减小是由3倍重复数字的压缩引起的?

在我看来,它是2。因为在各种语言中,JPG导出功能都没有灰度选项,例如Javascript中的toDataURL

var fullQuality = canvas.toDataURL('image/jpeg', 1.0);
var mediumQuality = canvas.toDataURL('image/jpeg', 0.5);
var lowQuality = canvas.toDataURL('image/jpeg', 0.1);

2 个答案:

答案 0 :(得分:3)

彩色JPEG具有3个成分:Y Cb Cr

灰度JPEG具有1个分量:Y

您只需将标头更新为指示1个成分并删除Cb和Cr扫描,即可将彩色JPEG转换为灰度。

答案 1 :(得分:0)

  

JPG规范中是否存在特定的“灰度”格式?

是的,它得到了很好的支持。如今已经很少使用它了,但是大多数东西都可以阅读。

  

还是“灰度JPG”通常是彩色RGB JPG,其中R值== G值== B值,因此文件大小的减小是由3倍重复数字的压缩导致的?

并非所有的API都会公开所有可用的功能。灰度处理特定于该格式,并非在所有其他格式中都可用。特别是,Canvas API尝试对所有可能的导出格式进行标准化。因此,仅支持部分功能。

当您通过Canvas API保存图像时,很可能是您在保存带有色度分量的JPEG,它们实际上为空并且压缩良好。 (也就是说,具体行为是不确定的,浏览器可以选择通过检测灰度来优化和保存灰度JPEG。)