2009-07-22 15 views
7

Carica una foto, è un rettangolo. Come posso ridimensionarlo e riempirlo in un quadrato?Come ritagliare e riempire con Paperclip (o RMagick)?

Voglio dire quando la foto è posizionata orizzontalmente dovrebbe avere sopra e sotto di esso, due campi bianchi (per mantenere la forma di un quadrato) e quando è verticale, dovrebbe avere due campi bianchi sui lati della foto .

Quando ho usato PHP, una hanno usato questo http://www.verot.net/php_class_upload_samples.htm

Date un'occhiata al

100x150, mantenendo il rapporto, il riempimento superiore e inferiore

esempio

I sto usando Paperclip con RoR. Come è il modo migliore per farlo?

risposta

1

È necessario definire uno stile. Here's an example.

+0

Sì, lo so, ma come si fa? http://www.imagemagick.org/Usage/thumbnails/#fit – astropanic

+0

has_attached_file: picture,: styles => {: custom => "100x100>"} –

+0

questo non centra l'immagine nella casella quadrata – astropanic

17

Ecco cosa ho usato su un'app per rails 3 con graffetta. Ho usato le seguenti opzioni ImageMagick per renderlo centrato: background, comporre, gravità ed estensione. Sto usando il processore mini_magick.

has_attached_file :image, 
    :styles => { :large => ["855x570>", :jpg], :medium => ["432x288>", :jpg], :small => ["276x184>", :jpg], :tiny => ["195x130>", :jpg] }, 
    :processor => "mini_magick", 
    :convert_options => { 
    :medium => "-background white -compose Copy -gravity center -extent 432x288", 
    :small => "-background white -compose Copy -gravity center -extent 276x184", 
    :tiny => "-background white -compose Copy -gravity center -extent 195x130" 
    } 
+1

Esempio ben scritto. Funziona su Rails 4 con Paperclip 3.5.4. FYI Imagemagick imposta il colore di sfondo su bianco in modo tale che non sia necessario specificare tale opzione. 'medio: '-composto Copia -gravità centrale -estente 432x288'' – scarver2

+0

Solo un segno di spunta: assicurati di non avere un' # finale nelle definizioni di stile. Quindi, ': large = [" 855x570 # ",: jpg]' non funzionerà, dato che '#' dopo '855x570' dice a paperclip di ritagliare e centrare l'immagine. –

Problemi correlati