2

我想使用 Imagemagick 将一些 png 合成到一个 png 上。

其中一张图像 (b_0_1.png) 是蒙版。我需要使用添加剂组合物来应用它。

但是结果中的背景有一个问题,它应该是透明的,但是有一个黑色的方块。

这是我的命令:

magick -size 256x256 canvas:transparent \
  img/a_0_0.png -geometry +111+64 -compose over -composite \
  img/b_0_1.png -geometry +94+48 -compose plus -composite \
  img/c_0_0.png -geometry +108+88 -compose over -composite \
  img/d_0_0.png -geometry +102+62 -compose over -composite \
png32:result.png

结果:https ://picr.ws/i/6WT

黑色区域应该是透明的。

图片:http ://s000.tinyupload.com/index.php?file_id=91925640425537122879

4

2 回答 2

1

使用 ImageMagick 7,您可以使用这样的命令...

magick -background none \
   \( -page +111+64 a_0_0.png \) \
   \( -page +94+48 b_0_1.png -alpha copy -set compose plus \) \
   \( -page +108+88 c_0_0.png \) \
   \( -page +102+62 d_0_0.png \) \
   -page 256x256 -flatten png32:result.png

这将在每个子图像的括号内设置分页几何。

在带有掩码图像“b_0_1.png”的括号内,“-alpha 副本”去掉了黑色,“-set compose”将 compose 方法“plus”应用于该单独的图像。

然后页面大小设置为 256x256,所有部分都被展平并根据它们的页面几何形状定位。由于背景设置为“无”,因此在展平子图像时会创建透明画布。

compose 方法“over”是默认的,所以它用于没有设置 compose 方法的图像。使用 compose 方法“plus”将遮罩图像展平。

我在 bash 上使用 IM6 和在 Windows 上使用 IM7 对此进行了测试。对于这个 IM7 示例,我将 IM6 bash “convert”更改为“magick”。它应该与任一版本完全相同。

于 2019-05-27T02:05:35.567 回答
1

在 ImageMagick 中,你可以做

magick -size 256x256 canvas:transparent \
-channel rgb \
img/a_0_0.png -geometry +111+64 -compose over -composite \
img/b_0_1.png -geometry +94+48 -compose plus -composite \
img/c_0_0.png -geometry +108+88 -compose over -composite \
img/d_0_0.png -geometry +102+62 -compose over -composite \
png32:result.png


在此处输入图像描述

补充:我认为这就是你想要从你的评论中得到的。

magick -size 256x256 canvas:transparent \
img/a_0_0.png -geometry +111+64 -compose over -composite \
\( img/b_0_1.png -alpha opaque -alpha copy \) -geometry +94+48 -compose plus -composite \
img/c_0_0.png -geometry +108+88 -compose over -composite \
img/d_0_0.png -geometry +102+62 -compose over -composite \
png32:result.png


在此处输入图像描述

于 2019-05-24T23:43:38.110 回答