我無法獲得此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這意味着我還沒有載波實際上處理圖像。
您嘗試使用版本。 版本:中等do process:resize_to_limit => [300,300] end – Rafal
我可以試試,是否只能處理版本?我以爲我看到過他們可以修改原文的例子,因爲我只需要得到較小的版本,沒有別的。 –
它也應該在原文上工作。 S3是否每次都創建新圖像或更換當前圖像? – Rafal