我有一个1400x1400图像,在其中我想要修剪4个像素的左边,1在底部,并保持正方形比例,3从顶部。问题是,每当我使用jpegtran执行裁剪时,无论我做什么,像素都会从右下角被移除。例如,只测试左边的部分,我尝试了:
jpegtran -perfect -crop 1396x1400+0+0 -outfile crop.jpg image.jpg但这只会从右边移除4个像素;
jpegtran -perfect -crop 1396x1400-4+0 -outfile crop.jpg image.jpg这再次从右边移除4个像素;
jpegtran -perfect -crop 1396x1400+4+0 -outfile crop.jpg image.jpg这根本不移除任何像素;更多的是,
jpegtran -perfect -crop 1396x1400+x+0 -outfile crop.jpg image.jpg
jpegtran -perfect -crop 1396x1400-x+0 -outfile crop.jpg image.jpg在x介于0和4之间时,从右边分别删除4-x和x像素.当x大于5时,显然给出了一个错误。我无法完成任何左边的修剪。有谁可以帮我?
我在Arch系统上使用来自jpegtran版本1.4.2 (build 20151205)的libjpeg-turbo。
发布于 2016-03-30 10:30:31
jpegtran不能以任何比最小编码单位大小更细的增量进行无损切割,这取决于通道和色度采样方式的不同。它将是8×8,16×8,或16×16。
这意味着最小切割大小必须是8或16的偶数倍数,这取决于图像编码的方式。当图像维数不是8或16 or的偶数时,例外情况是右侧和底部边缘。在这种情况下,在右侧和/或底部边缘有部分块。例如,一幅17×17像素的图像可以从其右边缘或底部边缘切割1 1px,但不能从这些边缘切割2 1px,也不能从上边缘和左边缘切割1 1px。
其他任何东西都需要重新编码切割块。
引用手册中的话:
...lossless裁剪受到当前JPEG格式的限制:选定区域的左上角必须落在iMCU边界上。如果这不适用于给定的裁剪参数,则静默地将左上角向上移动和/或向左移动,同时增加区域尺寸以保持右下角不变。(因此,输出图像至少覆盖所请求的区域,但可以覆盖更多。)
发布于 2021-05-31 18:39:49
如果有人遇到这样的情况,并且愿意以16个像素的倍数进行裁剪,那么从各个方向切割16个像素的格式如下:
jpegtran -perfect -crop 1368x1368+16+16 -outfile crop.jpg image.jpghttps://unix.stackexchange.com/questions/273097
复制相似问题