Client.rb回形針ImageMagick的轉換爲灰度和作物,以適應144x144#
has_attached_file :avatar,
:path => ":rails_root/public/system/:attachment/:id/:style/:filename",
:url => "/system/:attachment/:id/:style/:filename",
:styles => {:thumb => "144x144#", :grayscale => { :processors => [:grayscale] }}
拇指版本版本的偉大工程,圖像裁剪到所需的大小,灰度轉換僅是圖像灰度,但圖像沒有被裁剪,這裏的灰階發生器,我在計算器上找到:
的lib/grayscale.rb
module Paperclip
# Handles grayscale conversion of images that are uploaded.
class Grayscale < Processor
def initialize file, options = {}, attachment = nil
super
@format = File.extname(@file.path)
@basename = File.basename(@file.path, @format)
end
def make
src = @file
dst = Tempfile.new([@basename, @format])
dst.binmode
begin
parameters = []
parameters << ":source"
parameters << "-colorspace Gray"
parameters << ":dest"
parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ")
success = Paperclip.run("convert", parameters, :source => "#{File.expand_path(src.path)}[0]", :dest => File.expand_path(dst.path))
rescue PaperclipCommandLineError => e
raise PaperclipError, "There was an error during the grayscale conversion for #{@basename}" if @whiny
end
dst
end
end
end
要將圖像轉換爲灰度,一些參數正在發送到imagemagick中,問題是 - 我必須發送哪些參數給imagemagick,因此它將完成"144x144#"
在回形針中所做的操作。
我試圖按照日誌,看看這是什麼"144x144#"
看起來像日誌,它一直在尋找這樣的:-crop '144x144+30+0'
,我試圖用它在我的發電機,並把它作爲PARAMS像:
parameters = []
parameters << ":source"
parameters << "-crop '144x144+30+0'"
parameters << "-colorspace Gray"
parameters << ":dest"
如果我使用與之前上傳的圖像相同的圖像,看起來像是有用的,如果我上傳另一張圖像,則圖像完全被裁剪錯誤。所以我得出的結論是,由回形針生成的param:-crop '144x144+30+0'
是針對該特定圖像尺寸的,而對於具有不同尺寸的另一個,通常會發送不同的參數以適應144px。
如何裁剪生成器中的圖像以適合等效於144x144#
的回形針或我需要發送給imagemagick以實現此目的的參數是什麼。謝謝。
這是迄今爲止最清潔的選擇。感謝你,@TomDunning! –