我使用CarrierWave,我希望将图像的大小调整为220px,最大高度为220px。
如果我使用process :resize_to_fit => [220,220]
,则宽度可能不是220px。我该怎么办?
答案 0 :(得分:3)
如果我正确地解释了这个问题:
对于肖像图像(比如480像素宽,640像素高),您可能需要将其缩小到220像素宽,然后将其裁剪为220像素高,从而产生方形图像。
对于横向图像,您可能希望将其缩小到220px宽(因此高度将小于220px)。
如果这是正确的,您需要一个两步的过程:
您可以使用manipulate!
命令编写自己的处理器(请参阅CarrierWave's own获取一些灵感)。
我认为这大致是你所追求的
process :resize => [220, 220]
protected
def resize(width, height, gravity = 'Center')
manipulate! do |img|
img.combine_options do |cmd|
cmd.resize width.to_s
if img[:width] < img[:height]
cmd.gravity gravity
cmd.background "rgba(255,255,255,0.0)"
cmd.extent "#{width}x#{height}"
end
end
img = yield(img) if block_given?
img
end
end
答案 1 :(得分:2)
Andy H答案的改进: