我正在使用回形針來存儲我的圖像,我想創建一個裁剪/旋轉的圖像作爲縮略圖。這裏是回形針應該運行的正常命令:停止回形針剪裁和其他參數之前調整大小
convert [file].jpg -gravity center -distort SRT -30 -quality 100 -antialias -flatten -background white -unsharp 0.3x0.3+5+0 -crop 433x433+69+88 +repage -resize "300x300>" [file].jpg
這產生了我想要的結果。我已經在安裝了imagemagick的電腦上直接測試了它。然而,在我的服務器上查看日誌,這些參數的順序是不同的。回形針希望a)把-resize "300x300>"
命令首先,然後放-crop 433x433+69+88
第二,然後再把其餘的論點。這改變了最終圖像的外觀!不是我想要的。下面是它在日誌輸出:
convert [file].jpg -auto-orient -resize "300x300>" -crop 433x433+69+88 +repage -gravity center -distort SRT -30 -quality 100 -antialias -flatten -background white -unsharp 0.3x0.3+5+0 [file].jpg
...這是我在我的模型配置:
Wine.rb
has_attached_file :photo, :styles => {
:thumb => {
:geometry => "300x300>",
:format => :jpg,
:processors => [:cropper, :recursive_thumbnail],
:thumbnail => :croppable
},
:general => ["150x375", :jpg],
:show => ["x425", :jpg],
:croppable => ["1200x1200>", :jpg]
},
:url => "/assets/wines/:style/:wine_name",
:path => ":rails_root/public:url",
:default_url => ":wine_default",
:default_path => ":rails_root/public:wine_default",
:default_style => :show,
:convert_options => {
:thumb => '-gravity center -distort SRT -30',
:croppable => '-gravity center -extent 1200x1200',
:general => '-gravity center -extent 150x375 -quality 95',
:all => '-quality 100 -antialias -flatten -background white -unsharp 0.3x0.3+5+0'
},
:processors => [:thumbnail, :compression]
基本上它在這個運行CONVERT.EXE命令:[:geometry] [:transformations] [:convert_options]。
我如何按照我想要的順序獲取東西?
recursive_thumbnail.rb - 用於運行:拇指縮略圖生成斷:croppable而不是原來的文件(因爲水平填充問題裁剪時)
module Paperclip
class RecursiveThumbnail < Thumbnail
def initialize file, options = {}, attachment = nil
super Paperclip.io_adapters.for(attachment.styles[options[:thumbnail] || :original]), options, attachment
end
end
end
cropper.rb
module Paperclip
class Cropper < Thumbnail
def transformation_command
if crop_command
super.join(' ').sub(/ -crop \S+/, '').split(' ') + crop_command
else
super
end
end
def crop_command
target = @attachment.instance
if target.cropping?
["+repage", "-crop", "#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}", "+repage"]
end
end
end
end
希望我能幫忙,但我只能推薦使用標準回形針功能來處理這種事情:)如果你想讓我給你一些想法,我可以做一個答案? –
當然,無論幫助,幫助。我甚至可以做一個自定義滾動的處理器,它將覆蓋Paperclip用於生成縮略圖的默認過程,但我不知道從哪裏開始。 – JakeTheSnake