我正在使用RMagick并希望将我的图像调整为固定宽度100px,并按比例缩放高度。例如,如果用户上传了300x900px的图片,我希望它被缩放为100x300px。
我正在使用RMagick并希望将我的图像调整为固定宽度100px,并按比例缩放高度。例如,如果用户上传了300x900px的图片,我希望它被缩放为100x300px。
只需将此代码放入您的上传文件中:
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
文档和示例在这里:http://www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit
请记住,resize_to_fit
会放大图像,如果它们比100px小。 如果您不希望这样做,请使用resize_to_limit
替换它。
我使用
process :resize_to_fit => [100, 10000]
使用10000
或任何一个非常大的数字告诉Carrierwave高度自由调整,只需调整宽度。
@iWasRobbed:我认为这不是正确的解决方案。根据你贴出的关于resize_to_fit
的链接:重设图像的最大高度。如果省略,则默认为new_width的值。
所以在你的情况下,process: resize_to_fit => [100,nil]
等同于process: resize_to_fit => [100,100]
,这并不能保证你总是会得到固定宽度为100像素的图片。
一个更好的解决方案难道不是:
process :resize_to_fit => [100, -1]
这样就完全不需要限制高度
编辑:刚意识到这仅适用于MiniMagick。对于RMagick,您似乎只能将一个较大的数值添加到高度。
[-1, 100]
不起作用,这意味着您无法创建固定高度的图像缩略图。 - lulalala
[100,nil]
似乎等同于[100,100]
! - Christoph Schiessl