2011-12-20 13 views

Respuesta

44

Sólo hay que poner esto en su archivo de subida:

class ImageUploader < CarrierWave::Uploader::Base 

    version :resized do 
    # returns an image with a maximum width of 100px 
    # while maintaining the aspect ratio 
    # 10000 is used to tell CW that the height is free 
    # and so that it will hit the 100 px width first 
    process :resize_to_fit => [100, 10000] 
    end 

end 

documentación y el ejemplo aquí: http://www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit

tener en cuenta, resize_to_fit ampliará las imágenes si son más pequeños que 100 px. Si no quiere que haga eso, reemplácelo con resize_to_limit.

+0

según lo señalado por Giang Nguyen: con respecto a carrierwave y procesamiento de imagen, '[100, nil]' parece ser equivalente a '[100, 100]'! –

+0

gracias, actualizado – iwasrobbed

15

utilizo

process :resize_to_fit => [100, 10000] 

Uso 10000 o cualquier número muy grande como para permitir que Carrierwave sabe que la altura es gratis, sólo cambiar el tamaño de la anchura.

@iWasRobbed: No creo que sea la solución correcta. De acuerdo con el enlace que ha pegado sobre resize_to_fit: The maximum height of the resized image. If omitted it defaults to the value of new_width. Así, en su caso process :resize_to_fit => [100, nil] es equivalente a process :resize_to_fit => [100, 100] lo cual no garantiza que siempre obtendrá el ancho fijo de 100px

12

No sería una solución mejor ser en realidad:

process :resize_to_fit => [100, -1] 

de esta manera usted no tiene que limitar la altura en absoluto

EDIT: acabo de dar cuenta que esto sólo funciona con MiniMagick, para RMagick que parece que no tienen más remedio que añadir un gran número a la altura

+0

Tenga en cuenta que '[-1, 100]' no funcionaría, lo que significa que no puede crear miniaturas de imágenes de altura fija. – lulalala

Cuestiones relacionadas