ImageMagick:将两幅边界透明的图像组合在一起

ImageMagick:将两幅边界透明的图像组合在一起

我有两张 JPG,一张big.jpg和一张small.jpg。我想提取一个与 大小相同的区域,并将region.jpg和合并为。等于,但在 16 像素边界处,它越来越类似于。big.jpgsmall.jpgregion.jpgsmall.jpgresult.jpgresult.jpgsmall.jpgregion.jpg

使用 ImageMagick,我分两步完成了此操作,首先制作一个半透明的 PNG:

convert -compress None small.jpg -channel A -virtual-pixel transparent -morphology Distance Euclidean:4,16! semitransparent.png
convert -compress None big.jpg -crop wxh+x+y semitransparent.png -composite result.jpg

有没有办法一步完成此操作,而无需生成中间 PNG?我试过这个:

convert -compress None big.jpg -crop wxh+x+y small.jpg -channel A -virtual-pixel transparent -morphology Distance Euclidean:4,16! -composite result.jpg

但这并不完全相同:半透明层在边缘处并不是真正透明的。

我对 ImageMagick 完全是个新手(真是一个复杂的软件!),任何建议都将不胜感激。

编辑

我正在添加文件big.jpgsmall.jpg进行操作,以及result.jpg来自 2 行解决方案的和result2.jpg来自单行解决方案的。-crop我使用的是200x160+160+80

大.jpg大.jpg

小.jpg小.jpg

结果.jpgresult.jpg (2 行解决方案)

结果2.jpgresult2.jpg (一行代码)

答案1

抱歉,我刚刚才找到答案。只需-compose atop在之前添加-composite

convert -compress None big.jpg -crop 200x160+160+80 small.jpg \
  -channel A -virtual-pixel transparent \
  -morphology Distance Euclidean:4,16! \
  -compose atop -composite result.jpg

相关内容