tutorial rails multiple files aws ruby-on-rails ruby rmagick carrierwave

ruby on rails - rails - Carrierwave-Cambiar el tamaño de las imágenes a ancho fijo



carrierwave wiki (3)

Estoy usando RMagick y quiero que mis imágenes cambien de tamaño a un ancho fijo de 100px, y escale la altura proporcionalmente. Por ejemplo, si un usuario subiera un 300x900px, me gustaría que se escalara a 100x300px.


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

process :resize_to_fit => [100, -1]

De esta manera no tienes que limitar la altura en absoluto.

EDITAR: Me di cuenta de que esto solo funciona con MiniMagick. Para RMagick, parece que no tiene más remedio que agregar un gran número a la altura


Simplemente ponga esto en su archivo de carga:

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 ejemplo aquí: http://www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit

Tenga en cuenta que resize_to_fit escalará las imágenes si son más pequeñas que 100px. Si no desea que lo haga, entonces sustitúyalo por resize_to_limit .


yo suelo

process :resize_to_fit => [100, 10000]

Use 10000 o cualquier número muy grande para que Carrierwave sepa que la altura es libre, solo cambie el tamaño al ancho.

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