2010-12-14 10 views
20

私は最近、Paperclip with Railsを実装し、blurのようなImageMagickのフィル​​タオプションのいくつかを試してみたいと思っています。私はこれを行う方法の例を見つけることができませんでした。それは通過する:別のオプションとしてスタイル?Rails Paperclip ImageMagickのフィル​​タオプションの使い方は?

:styles => { :medium => "300x300#", :thumb => "100x100#" } 

plangの答えは正しかったが、私はケースの誰かが見ていただけに、ぼかしの厳密解を与えたかったと、この質問見つかっ@:

:convert_options => { :all => "-blur 0x8" } 
// -blur {radius}x{sigma} 

これを変更:
これに alt text


alt text

答えて

13

私はこれをテストしていないが、あなたは、このように、「convert_options」パラメータを使用することができるはずです。

:convert_options => { :all => ‘-colorspace Gray’ } 

は私がpersonnaly自分のプロセッサを使用しhttps://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/thumbnail.rb

を見てください。モデルでは

:libに

has_attached_file :logo, 
        :url => PaperclipAssetsController.config_url, 
        :path => PaperclipAssetsController.config_path, 
        :styles => { 
           :grayscale => { :processors => [:grayscale] } 
           } 

module Paperclip 
    # Handles grayscale conversion of images that are uploaded. 
    class Grayscale < Processor 

    def initialize file, options = {}, attachment = nil 
     super 
     @format = File.extname(@file.path) 
     @basename = File.basename(@file.path, @format) 
    end 

    def make 
     src = @file 
     dst = Tempfile.new([@basename, @format]) 
     dst.binmode 

     begin 
     parameters = [] 
     parameters << ":source" 
     parameters << "-colorspace Gray" 
     parameters << ":dest" 

     parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ") 

     success = Paperclip.run("convert", parameters, :source => "#{File.expand_path(src.path)}[0]", :dest => File.expand_path(dst.path)) 
     rescue PaperclipCommandLineError => e 
     raise PaperclipError, "There was an error during the grayscale conversion for #{@basename}" if @whiny 
     end 

     dst 
    end 

    end 
end 

は、これは単純な階調変換のために必要な100%ではないかもしれませんが、それは動作します!

+2

申し訳ありませんが、偉大な答えてくれてありがとう! – jyoseph

+4

変換オプション ':styles => {:gray =>" 450x250 "}にconvert_options => {:gray =>" -blur 0x8 "}'を追加すると、 – Ben

0

Railsの5、ペーパークリップ5更新する代わりに、今のライブラリを追加することの

、あなただけのgrayscale optionを使用するようにシステム上のImageMagick's convert commandを呼び出すことができます。ぼかしやその他のImageMagickオプションでも同じことをすることができますが、これをグレースケールに変換する必要がありました。お使いのモデル(ロゴを持つクライアント)で

class Client < ApplicationRecord 
    has_attached_file :logo, 
        styles: { thumb: "243x243#", grayscale: "243x243#" } 
    # ensure it's an image 
    validates_attachment_content_type :logo, content_type: /\Aimage\/.*\z/ 

    # optional, just for name and url to be required 
    validates :name, presence: true 
    validates :url, presence: true 

    after_save :convert_grayscale 

    def convert_grayscale 
    system "convert #{self.logo.path(:thumb)} -grayscale Rec709Luminance #{self.logo.path(:grayscale)}" 
    end 

    def logo_attached? 
    self.logo.file? 
    end 
end 

それからちょうど(Paperclips github docsごとに)このようなビューに使用します。あなたのビューで

<%= image_tag(client.logo.url(:grayscale), class: 'thumbnail', alt: client.name, title: client.name) %> 

またはリンクをご希望の場合:遅延の

<%= link_to(image_tag(client.logo.url(:grayscale), class: 'thumbnail', alt: client.name, title: client.name), client.url) %> 
関連する問題