引言
我们说我有这个形象:
对于我在https://image.ibb.co/c5Nw6c/Mask.png中应用蒙版的图像(它是白色的,这就是我在这里设置它的原因)。面具基本上是一个消息气泡,右下角有一个箭头。
命令(在bash中)如下:
size=`convert Mask.png -format "%wx%h" info:`
convert \( couple.jpg -channel rgba -alpha on -resize $size \) Mask.png -compose copy_opacity -composite -compose over -background transparent -flatten png:result.png
结果是:
问题
现在让我们检查下两张图片:
图片2
图片3
如果我们对这两者做同样的事情,我们将获得以下结果:
我们在这里看到的是,为了正确应用蒙版,比例必须相似,否则,根据原始图像的大小,它可能会在底部或右侧裁剪。
问题
如何避免裁剪问题,并且:
非常感谢您的回答。
答案 0 :(得分:2)
此命令应采用任何输入图像,然后缩放它以填充蒙版。接下来,它使用“srcin”合成以遮罩为中心的图像,以显示遮罩为白色的图像部分。它通过展平到白色背景上完成。输出将是面具的尺寸。
convert Mask.png image.jpg \
+distort SRT "0,0 %[fx:t?max(u.w/v.w,u.h/v.h):1] 0 0,0" \
-shave 1x1 +repage -gravity center -compose srcin -composite \
-compose over -background white -flatten result.png
这应该适用于IM 6.8.9至IM 6.9.9。
答案 1 :(得分:1)
您正在获得这些结果,因为蒙版和图像具有两种不同的宽高比和大小。您应该调整蒙版的大小以使其与图像的尺寸完全一致,而不是与您所做的相反。因此,例如下面,我修改了Imagemagick命令,如下所示:
infile="image.jpg"
size=`convert $infile -format "%wx%h" info:`
convert "$infile" \( Mask.png -resize $size! \) -compose copy_opacity -composite -compose over -background transparent -flatten png:result.png
注意我添加!到-resize $ size!,以便强制掩码适合输入的尺寸。
编辑:如果您不想扭曲蒙版,那么唯一的方法是调整图像大小并填充图像以将其填充到蒙版的大小。在这里,我将背景从透明变为黑色以显示效果。您可以将其更改回透明。
infile="image.jpg"
size=`convert mask.png -format "%wx%h" info:`
convert \
\( "$infile" -resize $size -background white -gravity center -extent $size \) \
Mask.png \
-compose copy_opacity -composite \
-compose over -background black -flatten \
png:result2.png