Paperclip实现圆角图片

4
你如何使用Paperclip创建圆角图像?我找到了这个解决方案,它使用convert_options创建带有圆角的图片,但它不适用于Rails 3和Paperclip 2.4.5。生成的转换命令只有在使用ImageMagick alpha参数而不是阈值参数时才起作用:
  convert example.jpg \
     \( +clone  -alpha extract \
        -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
        \( +clone -flip \) -compose Multiply -composite \
        \( +clone -flop \) -compose Multiply -composite \
     \) -alpha off -compose CopyOpacity -composite  rounded_corners.png

对应于

has_attached_file :avatar,
                  :styles => { :medium => ["918x483#", :png] },
                  :convert_options => {:medium => Proc.new{self.convert_options}}

def self.convert_options(px = 15)
  trans = ""
  trans << " \\( +clone  -alpha extract "
  trans << "-draw 'fill black polygon 0,0 0,#{px} #{px},0 fill white circle #{px},#{px} #{px},0' "
  trans << "\\( +clone -flip \\) -compose Multiply -composite "
  trans << "\\( +clone -flop \\) -compose Multiply -composite "
  trans << "\\) +alpha off -compose CopyOpacity -composite "
end

这段代码片段似乎生成了正确的转换命令,但是出现了“处理流xyz缩略图时的错误”。
Command :: convert '/tmp/stream20120109-15817-1lju7p6-0.jpg[0]' -resize "918x" 
  -crop "918x483+0+105" +repage \( +clone -alpha extract -draw 'fill black polygon 
  0,0 0,15 15,0 fill white circle 15,15 15,0' \( +clone -flip \) -compose 
  Multiply -composite \( +clone -flop \) -compose Multiply -composite \) +alpha off
  -compose CopyOpacity -composite '/tmp/stream20120109-15817-1lju7p6-....png'
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: 
There was an error processing the thumbnail for stream20120109-15817-1lju7p6-0>
1个回答

4
最终我找到了,原来只是个简单的拼写错误。你需要使用-alpha off而不是+alpha off,这样上面的代码就可以正常工作了。有时候一个符号(-与+之间的区别)就能造成不同的结果。

谢谢你回来告诉我们解决方案。它对我很有帮助。 - peterept
它可以工作,但只能使用png格式,能否使用jpg格式? - dtelaroli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接