ImageMagick按百分比和限制进行缩放

9
我想使用 ImageMagick 调整各种图像的大小。 我需要在单个命令中完成此操作,不需要任何额外的支持语言。 我希望将所有宽度低于某个值的图像调整为 115%(或等效方式:将所有图像调整为特定大小,同时限制最大放大倍数为原始大小的 115%)。 我尝试混合 不同选项,但似乎不受支持。 这是否可能?

更新:

我使用了distort操作符作为可能的解决方案:

convert in.jpg +distort srt "%[fx:(w<1600)?1.15:1] 0" out.jpg

但是当扭曲图像超过1600像素时,它仍会执行操作,并重新编写具有略微不同像素计数的图像。
1个回答

4

也许更容易的方法是使用现有系统的命令以及convert来评估高级逻辑。

例如,我将利用test实用程序。

test $(identify -format "%[fx:(w<1600)?1:0]" in.jpg) -eq 1 && \
     convert in.jpg -resize 115% out.jpg

ImageMagick 7 中,将引入选项-exit,因此如果条件不符合,可以终止ImageMagick命令。 更新 仿射失真可能是更好的方法。由于以下仿射矩阵不会改变图像。
| 1 0 0 |
| 0 1 0 |
| 0 0 1 |

但以下内容将会增大115%。
| 1.15 0    0 |
| 0    1.15 0 |
| 0    0    1 |

convert in.jpg +distort AffineProjection \
        '%[fx:(w<1600)?1.15:1],0,0,%[fx:(w<1600)?1.15:1],0,0' \
        +repage out3.jpg

1
谢谢,但遗憾的是添加系统命令不是一个选项。我会尝试仿射变形。 - cyterdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接