当从 jpg 转换为质量值为 100 的 webp 时,图像大小会增加
Posted
技术标签:
【中文标题】当从 jpg 转换为质量值为 100 的 webp 时,图像大小会增加【英文标题】:Image size is increased when converted from jpg to webp with quality value 100 【发布时间】:2015-08-18 21:36:39 【问题描述】:我想用 .webp 替换我在 android 项目中的 .png 和 .jpg 文件以减少 应用大小。
我正在验证这 3 种 jpg 到 webp 转换的案例(对于 .png 和 .jpg):
-
80% 质量有损
100% 质量有损
无损
对于案例 1,尺寸按预期减少了约 30%
但对于案例 1 和 2,大小显着增加(.jpg 的 170KB 到 .webp 的 470KB)而不是减小。
使用的命令:
cwebp -q 100 input.jpg -o output.webp
这适用于所有三种在转换为 .webp 格式时尺寸减小的情况下的 .png 图像。
但同样不适用于 .jpg 图像? 缩小尺寸是否取决于 .jpg 图像? 从 .jpg/.png 转换为 .webp 时,尺寸是否保证会减小? 为什么尺寸变大了?
libwebp 版本:libwebp-0.4.3 操作系统 - Windows 64 位
【问题讨论】:
如果您将有损转换为无损,或将有损转换为具有比输入文件更高质量的有损,您将不会获得任何质量,但文件大小总是会增加。 为什么投反对票?我很明显知道有损到无损会增加大小吗?或者我怎么知道 JPG(输入)质量低于输出质量(上面的案例 2)? (Downvote 并不酷,我同意)有损和无损是两个不同的东西,就像苹果和橘子。无损压缩算法呈现精确的图像,因此输出文件总是大于有损文件。问题是,当您将图像压缩为 Jpeg(有损)时,它会添加伪像。因此,如果您尝试以 Png(无损)压缩此 jpeg 图像,无损算法将对每个工件进行编码以完美地再现它。最后,由于额外的人工制品,这个 Png 将比你从源代码直接编码时更大。 另外你应该明白,当你使用有损压缩时,你会丢失图像中的信息。之后,应用无损压缩将无济于事:数据丢失,不会重新出现。重新压缩有损图像的唯一用例是使用更低的有损质量设置对其进行压缩并丢失更多细节。 【参考方案1】:您面临的问题是,对于 JPEG,您可以操纵大量变量来获得不同的压缩。这就是您从有损压缩中获得的好处。无损压缩往往很少(如果有的话)。在无损压缩中,权衡是时间与压缩。有损是质量与压缩。
您正在通过第二个有损压缩过程运行有损压缩图像并获得相当不可预测的结果。
真正的比较是获取您的 PNG 图像并使用 webp 和 JPEG 使用各种设置对其进行压缩,以查看与压缩相比您获得的质量。
【讨论】:
【参考方案2】:包括对随 WebP 格式一起提供的 Google 文档的参考,其中提到了在转换为 WebP 格式时文件大小可能会增加。
是的,通常在从有损格式转换为 WebP 无损格式时,反之亦然。这主要是由于色彩空间差异(YUV420 与 ARGB)以及它们之间的转换。
https://developers.google.com/speed/webp/faq#can_a_webp_image_grow_larger_than_its_source_image
【讨论】:
以上是关于当从 jpg 转换为质量值为 100 的 webp 时,图像大小会增加的主要内容,如果未能解决你的问题,请参考以下文章