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