2017-02-23 2 views
0

Я использую Carrierwave для загрузки изображений, и мне нужно изменить размер изображений до их сохранения.Carrierwave изменение размера изображения перед сохранением

В моем avatar_uploader.rb У меня есть следующий код:

class AvatarUploader < CarrierWave::Uploader::Base 
include CarrierWave::MiniMagick 
storage :file 
resize_to_fit(150, 150) 

def resize_to_fit(width, height) 
process :resize_to_fit => [width, height] 
end 
end 

Но когда я загрузить изображение, размер не изменится на 150x150. Есть ли способ изменить размер изображения и сохранить его размер (150x150)?

ответ

0

Моя проблема была линия config.enable_processing = истинный в моей carrierwave .rb

Я удалил его, и теперь изображения сохраняются 150x150, как я и хотел.

Единственная строка, что мне нужно добавить в uploader.rb был: процесс resize_to_fill: [150, 150]

1

Если вы хотите, чтобы ваше изображение изменяется точно 150x150, даже если это означает, кадрирование изображения, вам нужно resize_to_fill

От carrierwave

Изменение размера изображения в соответствии с заданными размерами, сохраняя при этом соотношение сторон исходного изображения. При необходимости обрезайте изображение в большем размере.

+1

Благодарим вас за ответ. Я изменил код на ** resize_to_fill **, но все же изображения, которые я загружаю, не меняют их размер, ни обрезаны. –

+1

Проблема в том, как вы вызываете ее Определите непосредственно в теле вашего класса: process resize_to_fill => [150,150] – Codextremist

+1

Еще раз спасибо. У меня возникла еще одна проблема: я хочу удалить строку ** config.enable_processing = true * из моего носителя .rb и теперь он работает –

1

Ты уверен (а) Вы успешно передали свои параметры? Может быть, это не ваш вход. попробуйте sth. как этот

process :resize_to_fit => [150, 150] 

ро для конкретной версии:

version :thumbnail do 
    process :resize_to_fit => [150, 150] 
    end 

вместо того, чтобы использовать высоту и ширину ..

0

Это то, что я буду делать в моем случае, чтобы реорганизовать свой код. Когда этот загрузчик используется, загруженное изображение будет масштабироваться не более 150 на 150 пикселей. Затем создается версия с именем thumb, которая масштабируется и обрезается точно до 190 на 60 пикселей.

class AvatarUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    # include CarrierWave::RMagick 
    include CarrierWave::MiniMagick 

    storage :file 

    process resize_to_fit: [150, 150] 

    version :thumb do 
    process resize_to_fill: [190, 60] 
    end 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 

end