Процессор заточки скрепки заставляет стили изменения размера не работать - PullRequest
1 голос
/ 26 января 2011

Я пытаюсь заострить изображения, загруженные через скрепку.Код повышения резкости работает, но это приводит к тому, что стили не работают.Код выглядит так:

 has_attached_file :photo,
    :styles => {
                :thumb => {:geometry => "100x100>"},
                :medium => {:geometry => "300x300>"},
                :original => {:geometry => "1024x1024>"}
                },
    :processors => [:sharpen],
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/:style/:id/:filename"

Теперь, если я уберу опцию «Процессоры», загруженные изображения будут изменены, как указано.Однако, если я включу опцию «Процессоры», все полученные изображения будут иметь оригинальный размер.

Мой процессор повышения резкости выглядит следующим образом:

module Paperclip
  class Sharpen < Paperclip::Processor
    def initialize file, options = {}, attachment = nil
      super
      @file = file
      @current_format = File.extname(@file.path)
      @basename = File.basename(@file.path, @current_format)
    end

    def make
      dst = Tempfile.new(@basename)
      dst.binmode

      command = "#{File.expand_path(@file.path)} -unsharp 1.5×1.0+1.5+0.02 #{File.expand_path(dst.path)}"

      begin
        success = Paperclip.run("convert", command)
      rescue PaperclipCommandLineError
        raise PaperclipError, "There was an error converting sharpening the image for #{@basename}"
      end

      dst
    end
  end
end

Есть мысли?

1 Ответ

5 голосов
/ 26 января 2011

Попробуйте добавить :thumbnail в список процессоров:

:processors => [:thumbnail, :sharpen]

По умолчанию :thumbnail есть, но теперь вы переопределяете этот параметр.

"Можно указать несколько процессоров, и они будут вызываться в порядке, в котором они определены в массиве: processors. Каждому последующему процессору будет присвоен результат выполнения предыдущего процессора. Все процессоры получат одинаковые параметры, которые это то, что вы определяете в хэше: styles. "

...