2017-02-23 39 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 

但是當我上傳圖片,大小不更改爲150×150。 有什麼辦法調整圖像大小並保存大小(150x150)嗎?

回答

0

我的問題是行config.enable_processing =真 在我carrierwave .rb

我刪除它,現在圖像保存爲150x150,因爲我想。

,我需要在uploader.rb添加的唯一路線是: 過程resize_to_fill:[150,150]

1

如果您希望您的圖像大小使之正確150×150,即使這意味着裁剪圖像,你需要resize_to_fill

從carrierwave

調整圖像以適應指定的尺寸範圍內,同時保持寬高比的原始圖像。如有必要,請在較大的尺寸下裁剪圖像。

+1

謝謝您的回答。 我將代碼更改爲** resize_to_fill **,但仍然上傳的圖像不會更改它們的尺寸,也不會裁剪。 –

+1

問題在於你調用的方式它 直接在你的類的主體中定義:process resize_to_fill => [150,150] – Codextremist

+1

再次感謝你。 我有另一個問題,我從我的carrierwave.rb刪除行** config.enable_processing = true *,現在它工作 –

1

你確定你正確傳遞你的參數嗎?可能是它沒有得到你的輸入。嘗試某事這樣

process :resize_to_fit => [150, 150] 

RO的特定版本:

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

而不是使用高度和寬度..

0

這是我將我自己的情況做重構你的代碼。當使用這個上傳器時,上傳的圖像將被縮放爲不大於150×150像素。然後創建一個稱爲拇指的版本,該版本縮放並剪切至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 
相關問題