无损裁剪 JPEG 至整个 8x8 块

无损裁剪 JPEG 至整个 8x8 块

由于JPEG图像被压缩为8x8像素的块,如果JPEG的宽度或高度不能被8整除,那么技术上是否可以去除外边缘的1-7个像素无损地

(或者裁剪任何尺寸的外边缘,只要内部 8x8 块完好无损。)

答案1

基于jpegtran 手册页(和维基百科),JPEG 图像的左上角必须位于 8x8 块的角上,因此可以从 JPEG 图像中裁剪单个像素行/列底部正确的边缘,但是不是来自左边或者顶部。当然,也可以从左侧和顶部裁剪完整的 8x8 块。

手册页在-crop命令下提到了这一点:

与旋转和翻转变换一样,无损裁剪也受到当前 JPEG 格式的限制;所选区域的左上角必须位于 iMCU 边界上。如果没有,那么它会默默地向上和/或向左移动到最近的 iMCU 边界(右下角保持不变。)

答案2

jpeg 图像的顶部和左侧边缘始终位于块边界上。底部和右边缘可能是也可能不是。

因此,您可以自由选择无损裁剪图像的下边缘和右边缘,但裁剪图像的上边缘和左边缘必须是原始上边缘和左边缘的有效块大小的整数倍。

JPEG 图像的有效块大小各不相同。 DCT 适用于 8x8 块,但某些 JPEG 会进行色度二次采样,从而使有效块大小为 8x16 或 16x16。

相关内容