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
em
Alguma ideia?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.
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)
Com v6. 8. 4-Q16 usando o comando abaixo:
convert nike.png -matte -fill none -fuzz 1% -opaque white nikeOutput.png
Resultados em:
Aqui está o comando que eu uso:
convert nike.jpg -transparent white NikeProd.png