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
en
des idées?
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.
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)
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:
Voici la commande que j'utilise:
convert nike.jpg -transparent white NikeProd.png