Domanda

Vorrei modificare il trattamento dei miniature nella graffetta avendo ImageMagick applicare un'ombra esterna a tutte le miniature. Quello che mi sono bloccato sulla è il comando effettivo imagemagick che tirare fuori questo piccolo miracolo off. Tutto quello che ho provato restituisce un ombra in modo non corretto scala senza l'immagine originale.

def transformation_command
  scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
  trans = ""
  trans << " -resize \"#{scale}\""
  trans << " -crop \"#{crop}\" +repage" if crop
  # Apply Drop Shadow
  trans << " #{convert_options}" if convert_options? 
  trans
end

Una Ho provato ...

def transformation_command
  scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
  trans = ""
  trans << " -resize \"#{scale}\""
  trans << " -crop \"#{crop}\" +repage" if crop
  trans << " \( +clone -background black -shadow 60x5+10+10 \) +swap -background none -layers merge +repage"
  trans << " #{convert_options}" if convert_options? 
  trans
end

Sono completamente nuovo per ImageMagick, qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Dopo alcuni tentativi ed errori e seppellire la testa nella documentazione, ho finalmente capito.

has_attached_file :image, 
  :styles => { :thumb => ["100x100#", :png] }, 
  :convert_options => { :thumb => '\( +clone -background black -shadow 70x4+0+0 \) +swap -background none -layers merge +repage' }
  1. Assicurati di avere l'ultima versione di ImageMagick installato.
  2. [ "100x100 #",: png]. Converte l'immagine in PNG così l'ombra è trasparente
  3. In Opzioni convert,: il pollice si applicherà solo la conversione alla: stile del pollice, utilizzare:. Tutto per applicare la conversione a tutti i vostri stili
  4. Tweak "70x4 + 0 + 0" per ottenere l'ombra che si desidera.

Altri suggerimenti

Lo trovo molto più facile da utilizzare solo l'interfaccia RMagick piuttosto che l'invio di opzioni della riga di comando per ImageMagick sé.

Se si utilizza RMagick è possibile utilizzare il metodo di ombra.

img = Image.read('slide.png').first
shadow = img.shadow(0, 0, 0.0, '20%')

e quindi composito dell'immagine sopra l'ombra.

ho scritto un articolo sull'uso RMagick: http://schf.uc.org/articles/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick

Prova a leggerlo su di esso potrebbe dare una migliore comprensione.

Ho anche scritto un lib astrazione RMagick che cerca di rendere ancora più facile da usare. L'ho chiamato RubyShop perché ha cercato di imitare il compositing basato strato di photoshop .. (Io odio il nome e probabilmente cambiarlo se mai resuscitare il progetto)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top