2

我使用dragonfly ~> 0.9.15作物圓形圖像

給定一個圖像,我在如何使用轉換方法,蜻蜓從與透明背景的圖像裁剪的圓形部分相混淆。

我能夠使用直接圖像magick命令從命令行運行它,但我發現的示例命令使用實際文件,而我並不知道如何在蜻蜓處理它時動態獲取文件。

下面是我從imagemagick的堆棧溢出問題中拿出的實際命令。

https://stackoverflow.com/a/999563/1664852

convert -size 200x200 xc:none -fill walter.jpg -draw "circle 100,100 100,1" circle_thumb.png 

當我試圖實現與蜻蜓一樣的,這是配置:

require 'dragonfly/rails/images' 

Dragonfly[:images].configure do |c| 
    c.job :crop_circle do 
    process :resize, "320x440" 
    encode :png 
    process :convert, '-virtual-pixel HorizontalTile -background transparent -draw "circle 400,400 400,1" -compose Copy_Opacity -composite' 
    end 
end 

我得到的錯誤no such image當這個運行在服務器日誌。

如何使用imagemagick命令爲此配置convert函數?

+0

也許你應該這樣做在CSS – Dorian

+0

最終這就是我所做的,但它缺乏在舊版瀏覽器的支持,這就是爲什麼我需要服務器端圖像處理位。 –

回答

2

也許我的解決方案可以幫助其他人尋找一種方法來生成蜻蜓寶石的圓形圖像。

我無法找到一個可用的解決方案,但我設法通過採取一點點在這裏和那裏一點點。

原來,有一種非常簡單的方法可以使用explained here的vignette選項使用ImageMagick(6.8.9-1)製作圓形圖像。

下面的命令行將生成具有透明背景的圖像和圓形圖像:

convert profile.png -alpha set -background none -thumbnail 50x50^ -vignette 0x0 rounded_profile.png 

我們現在可以得到圓形的圖像爲輪廓圖像通過添加:如圖所示圓形處理器到dragonfly.rb初始化如下:

require 'dragonfly' 

# Configure 
Dragonfly.app.configure do 
    plugin :imagemagick 

    # Fictive secret no worries 
    secret "64d123456dafb767892c1d28ca6d123456ea4cc373dac117d6d1123456a29d6e" 

    url_format "/media/:job/:name" 

    datastore :file, 
    root_path: Rails.root.join('public/system/dragonfly', Rails.env), 
    server_root: Rails.root.join('public') 

    processor :rounded do |content, size| 
    content.shell_update ext: 'png' do |old_path, new_path| 
     "/usr/local/bin/convert #{old_path} -alpha set -background none -thumbnail #{size}^ -vignette 0x0 #{new_path}" 
    end 
    end 
end 

注意您可能需要更改路徑爲您轉換命令取決於在哪個平臺上運行的,我在Mac OS和ImageMagick的是通過自制安裝。

現在從具有蜻蜓處理圖像的任何模型,您可以撥打:

a_model_instance.an_image.rounded('50x50').url 

要返回這是由50像素50像素的圓形圖像。