首页 > 解决方案 > 使用 CarrierWave 调整图像大小而不保留原始纵横比

问题描述

我正在使用 CarrierWave 为我上传的图像添加版本。resize_to_fit 正在调整图像大小以适应指定尺寸,同时保留原始纵横比。如何在不保留原始纵横比或裁剪它们的情况下调整图像大小?

标签: ruby-on-railsrubycarrierwavermagickminimagick

解决方案


您需要使用 Carrierwave 的方法在上传器中定义自定义处理manipulate!方法。这是我刚刚测试过的一个例子:

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

    storage :file
    process :force_resize => [160, 160]

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

这会将图像大小调整为 160x160px,而不考虑纵横比(注意参数末尾的感叹号resize)。


推荐阅读