使用ImageMagick(图像裁剪语法)从其他部分组装图像

时间:2016-12-30 15:30:00

标签: imagemagick

我有一组源PNG图像,我想使用它们的一部分来组合最终的PNG图像。这些部件是矩形的,在目的地上从不重叠,但尺寸不同。有时它是整个源图像,有时只是一个子部分。我想多次编辑源代码并每次重新组合最终图像,所以我尝试使用sh和Imagemagick编写脚本来执行此操作。

我试过这个

convert \
-size 512x512 null:\
-page +96+32 source_a.png\
-page +96+0 source_b.png[32x32+16+16]  \
-background transparent\
-layers merge\
destination.png

(只有两个源图像用于说明) 我想要source_a.pngsource_b.png的所有内容。第一个没问题,但在source_b.png上使用'内联裁剪'语法会给我一个错误:

convert: geometry does not contain image `source_b.png' @ warning/transform.c/CropImage/666.

图像足够大:

$ identify source_b.png
source_b.png PNG 64x48 64x48+0+0 8-bit sRGB 3.7KB 0.000u 0:00.000

最好的方法是什么?我在MacOS 10.12上使用ImageMagick 6.9.7-0 Q16

2 个答案:

答案 0 :(得分:2)

PNG将保留内联裁剪的分页,因此添加页面将通过ROI超出范围。我成像它会更简单-repage内联裁剪然后尝试清除以前的分页&设置新页面。

convert -size 512x512 null: \
        -page +96+32 source_a.png \
        \( source_b.png[32x32+16+16] -repage +96+0 \) \
        -background transparent\
        -layers merge\
        destination.png

答案 1 :(得分:2)

替代方案可能是使用-geometry-composte来达到同样的效果:

convert -size 512x512 xc:white                            \
    source_a.png              -geometry +96+32 -composite \
    source_b.png[32x32+16+16] -geometry +96+0  -composite \
    result.png