2017-08-17 6 views
0

Je souhaite rogner une image (zone1), puis noircir une sous-zone particulière (zone2) de l'image rognée et enfin rendre l'arrière-plan transparent.Recadrer l'image, créer une sous-région et un arrière-plan transparents ImageMagick

Je peux obtenir la sortie désirée dans les 3 commandes séparées suivantes.

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 

Mais lorsque je tente de rejoindre les 3 commandes dans un seul comme ci-dessous, dans la sortie du euro2 apparaît toujours et le fond est pas transparent.

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

Comment puis-je faire cela en une seule commande? Merci

Mise à jour

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 

Répondre

1

ImageMagick 6, essayez ceci (si Imagemagick 7 remplacer la conversion avec Magick), en utilisant la nouvelle ligne \ pour le rendre plus lisible.

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 

Ou comme une longue ligne de commande:

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 

Par exemple, en utilisant une entrée de gradient:

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

Ou alternativement de composition une zone transparente sur l'image recadrée :

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

Merci beaucoup fmw42. Cela fonctionne parfaitement avec la première solution que vous avez partagée. J'ai besoin de rogner 2 images de l'image d'entrée et j'ai inséré votre solution dans mon script original et j'ai obtenu la sortie désirée. S'il vous plaît voir ma mise à jour ci-dessus. Merci beaucoup. –