裁剪图像,制作透明子区域和背景ImageMagick

时间:2017-08-17 19:20:11

标签: imagemagick crop transparent region

我想裁剪图像(区域1),然后使白色成为裁剪图像的特定子区域(区域2),最后使背景透明。

我可以通过以下3个单独的命令获得所需的输出。

convert input.jpg -crop 908x391+21+545 out1.jpg   'crop image (area1)
convert out1.jpg -fuzz 100% -fill '#ffffff' -region 908x28+4+33 -opaque white out2.jpg  'make blank particular region (area2)
convert out2.jpg -bordercolor "#0019ff" -border 4x4 -transparent white output.png       'make all white background transparent

但是当我尝试在下面的单个命令中加入3个命令时,在输出中仍然出现区域2并且背景不透明。

convert input.jpg -crop 908x391+21+545 -fuzz 100% -fill '#ffffff' -bordercolor "#0019ff" -border 4x4 -region 908x28+25+578 -transparent white output.png 

如何在一个命令中完成此操作?感谢

更新

convert input.jpg \
\( -clone 0 -crop 908x391+21+545  +repage -region 908x28+4+33 -fill white \
-colorize 100 +region -resize 908x681! -bordercolor "#f019ff" -border 4x4 \
-repage 1842x689+0+0   \) \
\
\( -clone 0 -crop 908x391+21+4444 +repage -region 908x28+4+33 -fill white \
-colorize 100 +region -resize 908x681! -bordercolor "#f019ff" -border 4x4 \
-repage 1842x689+926+0 \) \
-delete 0 -flatten -resize 1180 -transparent white OOUUTT.png 

1 个答案:

答案 0 :(得分:1)

在Imagemagick 6中,试试这个(如果Imagemagick 7用magick替换convert),使用新行\使其更具可读性。

convert input.jpg -crop 908x391+21+545 +repage \
-region 908x28+4+33 -fill white -colorize 100 +region \
-bordercolor "#0019ff" -border 4x4 -transparent white \
output.png

或者作为一个长命令行:

convert input.jpg -crop 908x391+21+545 +repage -region 908x28+4+33 -fill white -colorize 100 +region -bordercolor "#0019ff" -border 4x4 -transparent white output.png

例如使用渐变输入:

convert -size 1500x1500 gradient: -crop 908x391+21+545 +repage -region 908x28+4+33 -fill white -colorize 100 +region -bordercolor "#0019ff" -border 4x4 -transparent white output.png

enter image description here

或者在裁剪后的图像上合成透明区域:

convert -size 1500x1500 gradient: -crop 908x391+21+545 +repage \
\( -size 908x28 xc:none \) \
-alpha on -channel rgba -geometry +4+33 -compose copy -composite \
output2.png