作物与蜻蜓铁路的圆形图像

我正在使用dragonfly ~> 0.9.15

给定一个图像,我很困惑如何使用蜻蜓中的转换方法从透明背景的图像中裁剪圆形部分。

我可以使用直接图像magick命令从命令行运行它,但我找到的示例命令使用实际文件,我不知道如何获取文件,而dragonfly动态处理它。

这是我从imagemagick的堆栈溢出问题中获取的实际命令。

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

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

当我试图用dragonfly实现同样的function时,这就是配置:

 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命令为此配置convertfunction?

也许我的解决方案可以帮助那些正在寻找使用Dragonfly gem生成圆形图像的方法的人。

我无法找到一个随时可用的解决方案,但我设法通过在这里和那里采取一些东西来拼凑一些东西。

事实certificate,有一种非常简单的方法可以使用此处解释的晕影选项使用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 

请注意,您可能必须更改convert命令的路径,具体取决于您运行的平台,我在Mac OS上,而ImageMagick是通过Homebrew安装的。

现在,任何有Dragonfly处理图像的模型都可以调用:

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

返回50px×50px的圆形图像。