将多个Imagemagick命令转换为1个命令(修剪,调整大小,方形)

时间:2018-04-29 22:32:36

标签: imagemagick imagemagick-convert

目前,我正在使用多个imagemagick命令来修剪,调整大小(如果宽度或高度> 5000)和方形。是否可以组合成1个单一命令?

第1步:转换input_file.tif -fuzz 1%-trim output_file_trim.tif

第2步:使用output_file_trim.tif

中的identify命令获取新的图像宽度和高度

第3步:从图像宽度和高度获取最大尺寸

步骤4:如果最大尺寸> 5000然后
转换output_file_trim.tif -resize 5000x5000 output_file_trim.tif

第5步:最后,完成图像转换

转换output_file_trim.tif -flatten -gravity center -background white -extent" $ max_dimension" x" $ max_dimension" -format jpg output_file_final.jpg

@fmw42。以下单个命令是否正确以实现此要求:

convert `input_file.tif` -fuzz 1% -trim +repage \( +clone -rotate 90 +clone -mosaic +level-colors white \) +swap -flatten -gravity center -extent 105x105% -composite -format jpg `output_file_final.jpg`


2 个答案:

答案 0 :(得分:1)

此命令将读取输入图像并对其进行修剪。然后它调整大小以适应5000x5000的盒子,如果它大于5000x5000。然后它将画布重新定尺寸为正方形,两个尺寸都是宽度或高度的较大值。通过将图像放置在具有白色背景的方形画布的中心来完成。

convert input_file.tif -fuzz 1% -trim +repage -resize "5000x5000>" \
   -set option:distort:viewport "%[fx:max(w,h)]x%[fx:max(w,h)]" -virtual-pixel white \
   -distort affine "0,0 %[fx:h>w?(h-w)/2:0],%[fx:w>h?(w-h)/2:0]" \
   output_file_final.jpg

答案 1 :(得分:0)

将您的5个步骤放入一个命令只能在IM 7中完成,如下所示(unix语法):

magick -quiet input_file.tif -fuzz 1% -trim +repage \
-resize "5000>" \
-flatten -gravity center -background white \
-extent "%[fx:max(w,h)>5000?5000:max(w,h)]x%[fx:max(w,h)>5000?5000:max(w,h)]" \
output_file_final.jpg

在IM 6中,您需要在两个命令中执行此操作。首先找到max(w,h)和500中较大的一个,然后从第一步中保存临时图像。然后执行另一个命令,使用该暗淡

完成它
dim=$(convert -quiet input_file.tif -fuzz 1% -trim +repage \
+write output_file_final.jpg -format "%[fx:max(w,h)>5000?5000:max(w,h)]" info:)

convert output_file_final.jpg -resize "5000>" \
-flatten -gravity center -background white \
-extent ${dim}x${dim} output_file_final.jpg

我不明白你的最后一个命令。它与您概述的步骤无关。