2010-12-14 3 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

에서보세요. 이 간단한 그레이 스케일 변환을위한 100 % 필요하지 않을 수도 있습니다

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 

,하지만 작동합니다 lib에

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

: 모델에서

!

+2

죄송합니다, 감사 :

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

또는 당신이 선호하는 경우 링크

! – jyoseph

+4

전환 옵션 ': == { "gray =>"450x250 "}에 convert_options => {: gray =>"-blur 0x8 "}'을 추가하는 것이 더 쉽습니다. – Ben

0

레일 (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 당)이 같은 뷰에서 사용합니다. 보기에

: 위대한 답변 지연에 대한

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