我正在使用载波来上传图片。在上传时,我正在为图像创建缩略图,这是使用Rmagick方法完成的,resize_to_fill如下所示。
version :thumb do
process :resize_to_fill=> [150, 150]
end
以下是所有RMagick方法carrierwave supports的输出(我不想要):
:resize_to_fill => [150,150]
这适用于较大的图像,但我的较小图像会放大到150 x 150。
:resize_to_fit => [150,150]
再次调整大小,我希望它一个人留下!
:resize_to_limit => [150,150]
这个按原样保留,但不会裁剪较大的图像。它们的大小调整以保持纵横比。
以下是我想要的结果以及我的小图像和大图像的外观。
这是怎么回事?我希望将较小的图像单独保留并仅将较大的图像裁剪为150 x 150.是否有其他方法或选项可以传递给resize_to_fill?
答案 0 :(得分:6)
我通过修改代码here中描述的:resize_to_fill
carrierwave方法解决了这个问题。
我刚用相同的代码创建了一个新方法,并检查上传的图像是否更小。这是新方法:
def resize_to_fill_modfied(width, height, gravity=::Magick::CenterGravity)
manipulate! do |img|
img.crop_resized!(width, height, gravity) unless (img.columns <= width && img.rows <= height)
img = yield(img) if block_given?
img
end
end
正是我现在想要的。