2009-07-22 7 views
7

Je télécharge une photo, c'est un rectangle. Comment puis-je le redimensionner et le remplir d'un carré? Je veux dire quand la photo est positionnée horizontalement elle doit avoir au-dessus et en dessous, deux champs blancs (pour garder la forme d'un carré) et quand elle est verticalement, elle devrait avoir deux champs blancs sur les côtés de la photo .Comment recadrer et remplir avec Paperclip (ou RMagick)?

Quand je PHP, a ont utilisé cette http://www.verot.net/php_class_upload_samples.htm

Jetez un oeil à la

100x150, en gardant le rapport, le remplissage haut et en bas

exemple

I utiliser Paperclip avec RoR. Comment est la meilleure façon de faire cela?

Répondre

1

Vous devez définir un style. Here's an example.

+0

Oui, je sais, mais comment faire? http://www.imagemagick.org/Usage/thumbnails/#fit – astropanic

+0

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

+0

cela ne centre l'image dans la case carrée – astropanic

17

Voici ce que j'ai utilisé sur un rail 3 app w/trombone. J'ai utilisé les options ImageMagick suivantes pour le centrer: background, composer, gravity et extent. J'utilise le processeur 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

Exemple bien écrit. Cela fonctionne dans Rails 4 avec Paperclip 3.5.4. FYI Imagemagick par défaut la couleur d'arrière-plan au blanc, il n'est donc pas nécessaire de spécifier cette option. 'medium: '-compose Copy -gravity center -extent 432x288'' – scarver2

+0

Juste une tête: assurez-vous que vous n'avez pas un' #' de fin dans les définitions de style. Donc, ': large = [" 855x570 # ",: jpg]' ne fonctionnera pas, puisque le '#' après le '855x570' dit à paperclip de recadrer et de centrer l'image. –

Questions connexes