forthrin Asked: 2018-04-06 10:56:24 +0800 CST2018-04-06 10:56:24 +0800 CST 2018-04-06 10:56:24 +0800 CST 无损将 JPEG 裁剪为整个 8x8 块 772 由于 JPEG 图像以 8x8 像素的块压缩,如果 JPEG 的宽度或高度不能被 8 整除,在技术上是否可以无损地去除外边缘的 1-7 像素? (或者,只要内部 8x8 块完好无损,就可以裁剪任何尺寸的外边缘。) images image-manipulation 2 个回答 Voted Best Answer ilkkachu 2018-04-06T11:16:42+08:002018-04-06T11:16:42+08:00 根据jpegtran 手册页(和Wikipedia),JPEG 图像的左上角必须位于 8x8 块的角落,因此可以从底部和右边缘裁剪单个像素行/列,但不能从左侧裁剪或顶部。当然,也可以从左侧和顶部裁剪完整的 8x8 块。 -crop手册页在命令下提到了这一点: 与旋转和翻转变换一样,无损裁剪受到当前 JPEG 格式的限制;所选区域的左上角必须落在 iMCU 边界上。如果不是,那么它会默默地向上和/或向左移动到最近的 iMCU 边界(右下角不变。) plugwash 2018-04-06T11:20:49+08:002018-04-06T11:20:49+08:00 jpeg 图像的上边缘和左边缘始终位于块边界上。底部和右侧边缘可能是也可能不是。 因此,您可以自由选择无损裁剪图像的下边缘和右边缘,但裁剪图像的上边缘和左边缘必须是原始上边缘和左边缘的有效块大小的整数倍。 JPEG 图像的有效块大小各不相同。DCT 适用于 8x8 块,但一些 JPEG 是色度子采样,使得有效块大小为 8x16 或 16x16。
根据
jpegtran
手册页(和Wikipedia),JPEG 图像的左上角必须位于 8x8 块的角落,因此可以从底部和右边缘裁剪单个像素行/列,但不能从左侧裁剪或顶部。当然,也可以从左侧和顶部裁剪完整的 8x8 块。-crop
手册页在命令下提到了这一点:jpeg 图像的上边缘和左边缘始终位于块边界上。底部和右侧边缘可能是也可能不是。
因此,您可以自由选择无损裁剪图像的下边缘和右边缘,但裁剪图像的上边缘和左边缘必须是原始上边缘和左边缘的有效块大小的整数倍。
JPEG 图像的有效块大小各不相同。DCT 适用于 8x8 块,但一些 JPEG 是色度子采样,使得有效块大小为 8x16 或 16x16。