2014-07-14 40 views
0

我無法獲得此CarrierWave上傳程序來處理圖像並調整我想要的大小。CarrierWave無法調整大小/ Minimagick

圖像最初是用這個創建的。

class Screenshot 
    include Sidekiq::Worker 

    def perform(link_id) 
     link = Link.find(link_id) 
     file = Tempfile.new(["template_#{link.id.to_s}", '.jpg'], 'tmp', :encoding => 'ascii-8bit') 
     file.write(IMGKit.new(link.given_url, #quality: 50, width: 300).to_img(:jpg)) 
            :quality => 50, 
            :width => 300, 
            :height => 300, 
            "crop-w" => 300, 
            "crop-h" => 300, 
            "disable-smart-width" => true, 
            "zoom" => 0.35).to_img(:jpg)) 
     file.flush 
     link.snapshot = file 
     link.save 
     file.unlink 
    end 

end 

我無法得到這個工作,所以我想我只是調整上傳。然後,我修改了上傳器按照以下步驟執行此操作:

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

    storage :file 
    storage :fog 
    process :convert_it 

    def convert_it 
    manipulate! do |img| 
     img.resize '300x300' 
     img 
    end 
    end 

    def convert_it2 
    resize_to_limit [300,300] 
    end 

    def convert_it3 
    resize_to_fit [300,-1] 
    end 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    def cache_dir 
    "#{Rails.root}/tmp/uploads" 
    end 
end 

而且這也行不通。我試過每種轉換方法,只是一個直接的

process :resize_to_limit [300,300] 

圖像被創建。似乎現在總是在600寬度的任何高度。

圖像被上傳到AWS S3。

我有Imagemagick從自制軟件安裝--disable-openmp。我可以運行mogrify並從命令行轉換。

我可以調整圖像大小並將其保存在MiniMagick的導軌控制檯中,而不會出現問題。

我已經確定CarrierWave初始化程序的config.enable_processing = true。

我在控制檯或sidekiq終端窗口中看不到任何錯誤消息。

我是新來的,所以我很難被別人試用。爲什麼我的圖片沒有調整到我所要求的尺寸?

編輯:600寬度來自IMGKit這意味着我還沒有載波實際上處理圖像。

+0

您嘗試使用版本。 版本:中等do process:resize_to_limit => [300,300] end – Rafal

+0

我可以試試,是否只能處理版本?我以爲我看到過他們可以修改原文的例子,因爲我只需要得到較小的版本,沒有別的。 –

+0

它也應該在原文上工作。 S3是否每次都創建新圖像或更換當前圖像? – Rafal

回答

0

那麼這原來是由Sidekiq引起的,每次我改變代碼時都不會重新啓動。

我不知道你需要這樣做,但據我所知上傳器不使用sidekiq來上傳,所以我不清楚它爲什麼是副作用。

無論如何,每次我修改代碼時都停止使用sidekiq,導致了這種情況發生。

我也找到了寶石工頭一起幫助開始/停止所有服務。

如果有人能向我解釋爲什麼Sidekiq會干擾這件事讓我知道。 Sidekiq負責製作圖像,並且正在創建圖像。調整大小隻是在上傳過程中沒有發生。