【问题标题】:Image Magick - Composite an image over another without automatic croppingImage Magick - 在不自动裁剪的情况下将图像合成到另一个图像上
【发布时间】:2021-03-16 11:01:09
【问题描述】:

我正在创建一个脚本,通过裁剪原始图像的内部正方形并将其用作原始图像的褪色背景,将任何图像变成正方形。 OriginalFinal Result

我使用的 ImageMagick 命令大部分都在工作。但是,它有时会在将原始图像组合到背景图像上时对其进行裁剪。 OriginalFinal - You can see feet have been cropped

这是我在脚本中使用的命令:

1. Add transparent bars to fit square:
convert reference -trim +repage -resize '500x500>' -gravity center -background transparent -extent 500x500 refMain.png

2.Internal Cropped Background Image:
convert reference.jpg \
          \( +clone +level-colors white \
             \( +clone -rotate 90 +level-colors black \) \
             -composite -bordercolor white -border 1 -trim +repage \) \
          +swap -compose Src -gravity center -composite \
          -thumbnail '500x500>' refBG.png

3.Fade Out Background Image:
convert refBG.png -fill white -colorize 50% refBG.png

4.Overlay thumbnail onto stretched background:
composite -gravity center refMain.png refBG.png final.png

我想知道我可以向复合命令(或其中任何一个)添加/更改什么,以确保“主”图像完全覆盖在背景上,而不会被裁剪。

【问题讨论】:

    标签: image image-processing imagemagick


    【解决方案1】:

    使用 ImageMagick,您应该能够在一个命令中完成整个操作。试试这样的...

    convert input.jpg -resize '500x500>' -write mpr:img0 \
       -set option:distort:viewport '%[fx:max(w,h)]x%[fx:max(w,h)]' \
       -distort SRT '%[fx:(w>h)*(w/2)],%[fx:(h>w)*(h/2)] %[fx:max(w/h,h/w)] 0' \
       -fill white -colorize 50 mpr:img0 -gravity center -composite output.png
    

    (编辑了命令以修复语法问题,并在下面的描述中添加了一些细节。)

    这将获取任意尺寸的输入图像并调整其大小以适应 500x500 视口。然后它将其副本写入内存寄存器“mpr:img0”,以便稍后在命令中使用。

    接下来,它为即将进行的扭曲操作设置视口。它将是方形的,尺寸为宽度或高度中较大的一个。

    然后使用“-distort”缩放图像以适应调整大小和平方视口的中心。然后用 50% 的白色对其进行着色。

    之后,它使用内存寄存器“mpr:img0”将输入图像带回,将重力设置为中心,将输入合成到正方形的白背景上,然后写入输出文件。

    我已经在 bash shell 中使用 ImageMagick v6 测试了这个命令,并在 Windows 中进行了一些语法更改。通过将“convert”更改为“magick”,它应该可以与 IMv7 一起使用,但由于 IMv7 对 FX 表达式的使用更广泛,因此可以进一步简化。

    【讨论】:

    • 我也在 IM6 上,所以那里没问题。这更清洁,似乎按预期工作。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    • 2012-05-09
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多