如何无损地将 JPG 尺寸调整(减少)到一半
How to loselessly resize (reduce) JPG dimensions to half
我有分辨率为 1440x720 的大 JPG 文件。这个大小可以被 16、8、4、2 整除。我的 MCU 块是 16x16。我想将这张图片缩小两次,变成 720x360。有什么办法,如何在不损失质量的情况下实现这一点(调整大小时丢失像素除外)?
我正在寻找某种命令行工具来执行此操作。到目前为止,我找到了 jpegtran ,但在 -scale
之后,图像不可读。 jpegtran 中对此有警告:
CAUTION: An implementation of the JPEG SmartScale extension is
required for this feature. SmartScale enabled JPEG is not yet widely
implemented, so many decoders will be unable to view a SmartScale
extended JPEG file at all.
是否有任何其他工具或任何其他解决方法?
不幸的是没有,但好消息是这无关紧要。
JPEG 创建 8x8 和 16x16 块并通过忽略高频变化来压缩它们。所以如果你扔掉一半的像素,16x16 块变成 8x8,32x32 变成 16x16。然后你再次压缩它们,你会失去一点质量,因为块之间的边缘会产生高频,这些高频被截断了。
但是只要将 JPEG 设置为合理的质量水平,您就几乎不会注意到这种质量损失,除非您在某处进行按位比较。
(资源编译器中有一个 JPEG 编解码器,因此您可以通过摆弄量化表中的系数将质量级别设置为您想要的任何级别)。
https://github.com/MalcolmMcLean/babyxrc/blob/master/src/savejpeg.c
我有分辨率为 1440x720 的大 JPG 文件。这个大小可以被 16、8、4、2 整除。我的 MCU 块是 16x16。我想将这张图片缩小两次,变成 720x360。有什么办法,如何在不损失质量的情况下实现这一点(调整大小时丢失像素除外)?
我正在寻找某种命令行工具来执行此操作。到目前为止,我找到了 jpegtran ,但在 -scale
之后,图像不可读。 jpegtran 中对此有警告:
CAUTION: An implementation of the JPEG SmartScale extension is required for this feature. SmartScale enabled JPEG is not yet widely implemented, so many decoders will be unable to view a SmartScale extended JPEG file at all.
是否有任何其他工具或任何其他解决方法?
不幸的是没有,但好消息是这无关紧要。
JPEG 创建 8x8 和 16x16 块并通过忽略高频变化来压缩它们。所以如果你扔掉一半的像素,16x16 块变成 8x8,32x32 变成 16x16。然后你再次压缩它们,你会失去一点质量,因为块之间的边缘会产生高频,这些高频被截断了。
但是只要将 JPEG 设置为合理的质量水平,您就几乎不会注意到这种质量损失,除非您在某处进行按位比较。
(资源编译器中有一个 JPEG 编解码器,因此您可以通过摆弄量化表中的系数将质量级别设置为您想要的任何级别)。
https://github.com/MalcolmMcLean/babyxrc/blob/master/src/savejpeg.c