2011-10-12 28 views

risposta

9

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

Sostituisce qualsiasi cosa bianca con la trasparenza. L'opzione fuzz include tutto ciò che è quasi bianco.

+2

Come si converte in rmagick? – hadees

+0

@hadees questo sembra un buon inizio: [Capire convertire e tradurre ImageMagick in Ruby RMagick] (http://stackoverflow.com/questions/4132787/understanding-imagemagicks-convert-and-translating-to-ruby-rmagick) –

1

Con v6.8.4-Q16 utilizzando il seguente comando:

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

risultati in:

enter image description here

Ecco il comando che uso:

convert nike.jpg -transparent white NikeProd.png 

enter image description here

enter image description here

2

So di essere abbastanza in ritardo alla festa, ma molte cose sono cambiate da quando questa domanda è stata pubblicata prima, ecco come si può fare oggi con almeno la versione 2.15.4 di rmagick

Assumendo avete l'immagine da qualche parte accessibile:

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

Se anche voi volete ritagliare l'immagine in modo che è solo grande come i confini, è sufficiente utilizzare .trim!

image.trim! 

EDIT:

scopre il soluzione di cui sopra non funziona davvero per tutti i casi d'uso. Una soluzione più generale è questa:

# 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) 
Problemi correlati