2009-07-22 16 views
7

Subo una foto, es un rectángulo. ¿Cómo puedo cambiar el tamaño y llenarlo en un cuadrado?Cómo recortar y rellenar con Paperclip (o RMagick)?

Me refiero a cuando la foto está en posición horizontal debe tener arriba y debajo, dos campos blancos (para mantener la forma de un cuadrado) y cuando es vertical, debe tener dos campos blancos en los lados de la foto .

Cuando solía PHP, un han utilizado este http://www.verot.net/php_class_upload_samples.htm

Tener un vistazo a la

100x150, manteniendo relación, llenando la parte superior e inferior ejemplo

I Estoy usando Paperclip con RoR. ¿Cómo es la mejor manera de hacer eso?

Respuesta

1

Necesita definir un estilo. Here's an example.

+0

Sí, lo sé, pero ¿cómo hacer esto? http://www.imagemagick.org/Usage/thumbnails/#fit – astropanic

+0

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

+0

esto no centra la imagen en el recuadro cuadrado – astropanic

17

Esto es lo que utilicé en una aplicación de rails 3 con clip. Usé las siguientes opciones de ImageMagick para centrarlo: fondo, componer, gravedad y extensión. Estoy usando el procesador 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

Ejemplo bien escrito. Esto funciona en Rails 4 con Paperclip 3.5.4. FYI Imagemagick predetermina el color de fondo a blanco, por lo que no es necesario especificar esa opción. 'medium: '-componer Copy -gravity center -extent 432x288'' – scarver2

+0

Solo una cabeza arriba: asegúrate de no tener un' # 'posterior en las definiciones de estilo. Entonces, ': large = [" 855x570 # ",: jpg]' no funcionará, ya que el '#' después de '855x570' le dice al clip que recorta y centra la imagen. –

Cuestiones relacionadas