web-dev-qa-db-fra.com

Comment remplacer la couleur d'arrière-plan blanc par la transparence d'une image dans ImageMagick?

J'ai une image dans .jpg format avec white background color. Je souhaite supprimer la couleur d'arrière-plan blanc en transparent dans Imagemagick. J'ai essayé de nombreuses façons mais le fond blanc ne peut toujours pas être supprimé. Quelqu'un peut-il m'aider à résoudre ce problème?.

31
NewUser

Tout d'abord, vous devez convertir le format d'image du format .jpg Au format .png, Car JPEG ne prend pas en charge la transparence. Utilisez ensuite cette commande:

convert image1.png -fuzz 20% -transparent white result.png

L'option -fuzz Permet également de convertir le pourcentage spécifié par rapport à la couleur blanc pur en transparent. Cela est utile, par exemple, lorsque votre image contient du bruit ou des dégradés subtils.

39
NewUser

Vous ne pouvez pas avoir de couleurs d'arrière-plan transparentes dans vos fichiers JPEG. Le format de fichier JPEG ne prend pas en charge la transparence.

Si vous avez besoin d'un fond transparent, vous devez convertir le JPEG en

  • pNG (haute qualité, taille de fichier peut-être plus grande que JPEG)
  • ou GIF (au cas où vous pourriez tolérer une qualité médiocre et une gamme de 255 couleurs au maximum).

Exemple de commande:

convert  your.jpg  -transparent white  your.png
53
Kurt Pfeifle

Je viens de trouver une chose très soignée!

magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png

Il s'agit d'un script bash Fred Weinhaus qui peut être téléchargé à partir de ici (pour un usage non commercial uniquement). Il y a aussi environ 250 scripts !! et celui-ci est incroyable! il a fait exactement l'affaire, pour supprimer tout l'arrière-plan tout en gardant les points d'image internes intacts!

Sur sa page, il y a plusieurs images à titre d'exemples donc vous choisissez ce que vous devez mettre en ligne de commande!

La position initiale 1,1 est un devineur général qui dit que tout le contour est de fond.

Attention, la sortie doit être ".png"

8
Aquarius Power

C'est ma solution sans magicwand (remplacez magick par convert pour im <7.0):

magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png
2
roipoussiere