【问题标题】:Convert multiple Imagemagick commands into 1 command (trim, resize, square)将多个 Imagemagick 命令转换为 1 个命令(修剪、调整大小、正方形)
【发布时间】:2018-10-10 01:01:11
【问题描述】:

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

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

第 2 步:使用来自output_file_trim.tif 的识别命令获取新的图像宽度和高度

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

第 4 步:如果最大尺寸 > 5000 则
转换output_file_trim.tif -resize 5000x5000 output_file_trim.tif

第五步:最后,完成图片转换

转换output_file_trim.tif -flatten -重心 -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`


【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案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
    

    【讨论】:

    • GeeMack 在这里有一个比我下面的 IM 6 版本更好的解决方案。我没想过要使用视口裁剪。
    • 感谢 GeeMack。 -flatten 不需要包含吗?
    • 该示例命令仅适用于单个输入图像,它会修剪、调整大小、使画布成正方形并将图像在画布中居中。它不会一路创建单独的背景,所以我们不需要“-flatten”任何东西。
    【解决方案2】:

    将您的 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
    

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

    【讨论】:

    • 非常感谢@fmw42。将使用 Img4Java 进行尝试并通知您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多