2011-08-25 20 views
23

Usando CarrierWave in Rails 3.0, ¿cómo haría para cambiar el tamaño del código , cambiar el tamaño de las imágenes que tienen un ancho superior a 500 píxeles y ajustar la altura adecuadamente, manteniendo la misma proporción inicial de ancho a alto.CarrierWave y cambiar el tamaño a un ancho específico

+0

posible duplicado de [Carrierwave - Cambiar el tamaño de imágenes para ancho fijo] (http://stackoverflow.com/questions/8570181/carrierwave-resizing-images-to-fixed-width) –

+0

no es un duplicado: se trata de mantener la relación de aspecto con una dimensión fija. – sevenseacat

Respuesta

-4

Suponiendo que está usando RMagick o MiniMagick, añadir esta línea a su clase de subida por

process :resize_to_fit => [500] 

Más información:

http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/RMagick.html#M000064 http://www.imagemagick.org/RMagick/doc/ image3.html # resize_to_fit

+2

Eso hará explotar las imágenes pequeñas, así como reducir las imágenes de gran tamaño. La pregunta solo se refiere a la reducción de imágenes grandes: 'process: resize_to_limit => [500]' –

+1

¿Puede solicitar el ancho de la imagen en el camino hacia esta lógica? Luego usa y si no construye. – BuddyJoe

+0

¿Qué es lo que estás tratando de hacer exactamente? –

4

Sé que esta es una vieja pregunta, pero necesitaba algo similar.

Quería que se redimensionara el tamaño de las imágenes si eran más grandes que un tamaño determinado, pero no se ampliaron si fueran más pequeñas.

resize_to_limit (anchura, altura)

cambiar el tamaño de la imagen para encajar dentro de las dimensiones especificadas al tiempo que conserva la relación de aspecto original. Solo cambiará el tamaño de la imagen si es más grande que las dimensiones especificadas. La imagen resultante puede ser más corta o más estrecha que la especificada en la dimensión más pequeña, pero no será mayor que los valores especificados.

Detalles: http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/MiniMagick.html#M000051

1

Si desea limitar el ancho única, de uso:

process :resize_to_limit => [500, -1] 

y uso:

process :resize_to_limit => [-1, 500] 

al límite de altura solamente.

+0

arroja 'height must be> = 0: -1 ' – MaicolBen

30
process :resize_to_limit => [500, 0] 

Esto procesará la imagen para que no sea más ancho que 500px mientras conserva la relación de aspecto adecuada y permite cualquier altura.

+6

Al usar esto con carrierwave 0.10.0 y mini_magic 3.6.0, las imágenes se redujeron a 1x1 píxeles. Usando '[500, nil]' como argumentos funcionó para mí en su lugar. – efatsi

36

que puede utilizar:

process :resize_to_limit => [500, nil] 
+0

Esa parece ser la sintaxis correcta. – valk

Cuestiones relacionadas