2016-12-30 32 views
0

我有一组源PNG图像,我想用它们的一部分来组装最终的PNG图像。零件是矩形的,不会在目的地上重叠,但尺寸不同。有时它是整个源图像,有时只是一个小节。我想多次编辑源文件并每次重新组装最终映像,因此我试图使用sh和Imagemagick编写脚本来完成它。用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.png和一块source_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上使用ImageMagick 6.9.7-0 Q16 10.12

回答

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 
+0

哇!更清洁的解决方案 – emcconville

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