首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jpegtran -无损地裁剪图像的左边部分

jpegtran -无损地裁剪图像的左边部分
EN

Unix & Linux用户
提问于 2016-03-30 10:11:27
回答 2查看 3.2K关注 0票数 6

我有一个1400x1400图像,在其中我想要修剪4个像素的左边,1在底部,并保持正方形比例,3从顶部。问题是,每当我使用jpegtran执行裁剪时,无论我做什么,像素都会从右下角被移除。例如,只测试左边的部分,我尝试了:

代码语言:javascript
复制
jpegtran -perfect -crop 1396x1400+0+0 -outfile crop.jpg image.jpg

但这只会从右边移除4个像素;

代码语言:javascript
复制
jpegtran -perfect -crop 1396x1400-4+0 -outfile crop.jpg image.jpg

这再次从右边移除4个像素;

代码语言:javascript
复制
jpegtran -perfect -crop 1396x1400+4+0 -outfile crop.jpg image.jpg

这根本不移除任何像素;更多的是,

代码语言:javascript
复制
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

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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边界上。如果这不适用于给定的裁剪参数,则静默地将左上角向上移动和/或向左移动,同时增加区域尺寸以保持右下角不变。(因此,输出图像至少覆盖所请求的区域,但可以覆盖更多。)

票数 6
EN

Unix & Linux用户

发布于 2021-05-31 18:39:49

如果有人遇到这样的情况,并且愿意以16个像素的倍数进行裁剪,那么从各个方向切割16个像素的格式如下:

代码语言:javascript
复制
jpegtran -perfect -crop 1368x1368+16+16 -outfile crop.jpg image.jpg
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/273097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档