使用carrierwave调整图像大小,忽略纵横比 - Rails

时间:2014-10-30 18:42:35

标签: ruby-on-rails imagemagick carrierwave minimagick

如何使用carrierwave和minimagick调整图像大小以使其忽略宽高比? 我想要一张[120,120]图片

(链接的答案维持宽高比,我想忽略宽高比!!)

2 个答案:

答案 0 :(得分:5)

您需要在上传器中编写自定义处理方法:

class MyImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  version :square do
    process my_resize: [120, 120]
  end

  def my_resize(width, height)
    manipulate! do |img|
      img.resize "#{width}x#{height}!"
      img
    end
  end

end

resize方法使用ImageMagick geometry syntax。所以在这种情况下,最后的感叹号告诉ImageMagick忽略宽高比。

答案 1 :(得分:1)

您可以使用resize_to_fill: [120, 120]。这将忽略纵横比,因此得到的图像将是120x120

不要与保留宽高比的resize_to_fit: [120, 120]混淆,因此产生的图像可能是120x90(取决于宽高比)。

希望这有帮助