RMagick remover o fundo branco da imagem e torná-lo transparente

Preciso de remover o fundo branco desta imagem e tornar o fundo transparente. Então é apenas um carrapato preto no fundo transparente exportado como um png.

por exemplo, virar

enter image description here

em

enter image description here

Alguma ideia?

Author: mu is too short, 2011-10-12

3 answers

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

Substitui tudo o que é branco pela transparência. A opção fuzz inclui qualquer coisa que é quase-branco.

 9
Author: Shaun, 2011-10-12 10:21:42

Eu sei que estou muito atrasado para a festa, mas muita coisa mudou desde que esta pergunta foi publicada pela primeira vez, então aqui está como você pode fazê-lo hoje usando pelo menos a versão 2.15.4 de rmagick

Assumindo que tens a imagem algures acessível:

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

Se você também quiser aparar a imagem para que seja tão grande quanto os limites, basta usar .trim!

image.trim!

Editar:

Acontece que a solução acima não funciona realmente para todos os casos de uso. Uma solução mais geral é isto:

# 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
Author: Matei Iorgulescu, 2017-02-02 14:27:55

Com v6. 8. 4-Q16 usando o comando abaixo:

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

Resultados em:

enter image description here

Aqui está o comando que eu uso:

convert nike.jpg -transparent white NikeProd.png

enter image description here

enter image description here

 1
Author: Jeremy Thompson, 2013-04-22 02:03:18