2012-01-09 14 views
4

どのようにして丸みを帯びたコーナーをペーパークリップで作成しますか?私はrounded corners with paperclip using convert_optionsを作成するこのソリューションを見つけましたが、Rails 3およびPaperclip 2.4.5では動作しません。丸みを帯びたコーナーとペーパークリップ

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 

に対応

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 

このコードスニペットは、右の変換コマンドを生成するようだが、「を与える:私は代わりに、しきい値PARAMTERのImageMagick alpha parameterを使用する場合にのみ、コマンドが機能変換生成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

+0

それは働いていますが、pngだけで、jpgで可能ですか? – dtelaroli

関連する問題