我正在使用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
函数?
最佳答案
也许我的解决方案可以帮助其他正在寻找使用 Dragonfly gem 生成圆形图像的方法的人。
我无法找到现成的解决方案,但我通过到处学习一点点,设法将一些东西拼凑起来。
事实证明,有一种非常简单的方法可以使用 ImageMagick (6.8.9-1) 使用 vignette 选项(即 explained here )制作圆形图像。
下面的命令行将生成一个背景透明且图像圆角化的图像:
convert profile.png -alpha set -background none -thumbnail 50x50^ -vignette 0x0 rounded_profile.png
我们现在可以通过向 Dragonfly.rb 初始值设定项添加 :rounded 处理器来获取个人资料图片的圆形图像,如下所示:
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 是通过 Homebrew 安装的。
现在,您可以从具有由 Dragonfly 处理的图像的任何模型调用:
a_model_instance.an_image.rounded('50x50').url
返回 50 像素 x 50 像素的圆形图像。
关于ruby-on-rails - 使用蜻蜓 rails 裁剪圆形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477809/