ImageMagick按百分比和限制调整大小

时间:2015-07-30 12:50:29

标签: imagemagick image-resizing

我正在尝试使用ImageMagick调整各种图像的大小。 我要求在单个命令中完成此操作,而不支持额外的语言。

我想将所有低于特定宽度的图像调整为115%(或等效:将所有图像调整到一定大小,同时将最大放大限制为原始图像的115%)。

我尝试过混合不同的选项,但似乎不支持。

这甚至可能吗?

更新

我使用distort运算符作为可能的解决方案:

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

但是当扭曲图像&gt; 1600像素时,它仍会执行操作并使用略微不同的像素数重写图像。

1 个答案:

答案 0 :(得分:3)

使用现有系统的命令和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命令。

<强>更新

Affine distortion可能是更好的方法。由于以下仿射矩阵不会改变图像

| 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