RMagick supprimer le fond blanc de l'image et le rendre transparent

je dois enlever le fond blanc de cette image et rendre le fond transparent. Donc c'est juste un point noir sur le fond transparent exporté en png.

p.ex. Tour

enter image description here

en

enter image description here

des idées?

10
demandé sur mu is too short 2011-10-12 14:12:30

3 réponses

convert image.png -matte -fill none -fuzz 1% -opaque white result.png

remplace tout ce qui est blanc par de la transparence. L'option fuzz inclut tout ce qui est presque blanc.

9
répondu Shaun 2011-10-12 10:21:42

je sais que je suis assez en retard à la fête, mais beaucoup de choses ont changé depuis que cette question a été postée, alors voici comment vous pouvez le faire aujourd'hui en utilisant au moins la version 2.15.4 de rmagick

si vous avez l'image quelque part accessible:

image = Magick::Image.new(path_to_file)
image.background_color = 'none'

si vous voulez également couper l'image de sorte qu'elle est aussi grande que ses limites, il suffit d'utiliser .trim!

image.trim!

EDIT:

Tours la solution ci-dessus ne fonctionne pas vraiment pour tous les cas d'utilisation. Une solution plus générale est celle-ci:

# the image needs to be in 'PNG' format
image.format = 'PNG'

# set a fuzz on the image depending on how accurate you want to be
image.fuzz = '10%'

# get the image background color
background_color = image.background_color

# convert pixels based on their color to being transparent
# the fuzz set above controls how accurate the conversion will be
image.paint_transparent(background_color)
2
répondu Matei Iorgulescu 2017-02-02 14:27:55

avec v6.8.4-Q16 en utilisant la commande suivante:

convert nike.png -matte -fill none -fuzz 1% -opaque white nikeOutput.png

résultats dans:

enter image description here

Voici la commande que j'utilise:

convert nike.jpg -transparent white NikeProd.png

enter image description here

enter image description here

1
répondu Jeremy Thompson 2013-04-22 02:03:18