我正在尝试使用ImageMagick调整各种图像的大小。
我要求在单个命令中完成此操作,而不需要任何额外的支持语言。
我想将所有宽度以下的图像调整为115%(或等效:将所有图像调整为一定大小,同时将最大放大限制为原始图像的115%)。
我试过混合不同的选项,但似乎不支持。
这可能吗?
更新:
我使用distort
运算符作为可能的解决方案:
convert in.jpg +distort srt "%[fx:(w<1600)?1.15:1] 0" out.jpg
但是当图像失真>1600像素时,它仍然执行一个操作,并用稍微不同的像素数重写图像。
使用现有系统的命令和convert
来评估高级逻辑可能更容易。
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