2012-01-09 139 views
4

如何用回形针创建圆角?我发现这个解决方案创建了rounded corners with paperclip using convert_options,但它不适用于Rails 3和Paperclip 2.4.5。生成的唯一的,如果我使用ImageMagick alpha parameter,而不是门槛放慢参数转换命令作品:带回形针的圆角

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 

该代码段似乎产生正确的转换命令,而是给出了一个“处理stream-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> 

回答

4

最后我发现它是一个简单的错字。你必须使用-alpha off而不是+alpha off,那么上面的代码可以正常工作。有时候一个符号( - 而不是+或者反过来)会有所不同。

+0

感谢您回来让我们知道解决方案。它帮助了我。 – peterept 2015-03-10 13:07:19

+0

它的工作,但只是与PNG,这是可能与JPG? – dtelaroli 2017-02-15 13:26:36