旋转附有回形针的图像

时间:2014-08-08 16:17:33

标签: ruby-on-rails paperclip

我们有一个使用Paperclip(4.2.0)附加头像的AR模型。我们希望允许用户旋转此图像,但我在使其工作时遇到了很多困难。我的代码如下:

module Paperclip
  class Rotator < Thumbnail
    def initialize(file, options = {}, attachment = nil)
      options[:auto_orient] = false
      super
    end

    def transformation_command
      if rotate_command
        "#{rotate_command} #{super.join(' ')}"
      else
        super
      end
    end

    def rotate_command
      target = @attachment.instance
      if target.rotation.present?
        " -rotate #{target.rotation}"
      end
    end
  end
end

class User < ActiveRecord::Base
  has_attached_file :avatar, {
    styles: {
      small: ['72x72#', :png]
    },
    processors: [:rotator]
  }
  attr_accessor :rotate
end

我正试图通过以下方式旋转图像:

user.rotate = 90
user.avatar.reprocess!

我可以看到-rotate 90选项被传递给转换,但它没有做任何事情。有没有人设法使用回形针让这个工作?

1 个答案:

答案 0 :(得分:1)

target.rotation替换为target.rotate,并为rotate_method添加一个尾随空格为我做了诀窍。

module Paperclip
  class Rotator < Thumbnail
    def transformation_command
      if rotate_command
         rotate_command + super.join(' ')
      else
        super
      end
    end

    def rotate_command
      target = @attachment.instance
      if target.rotate.present?
        " -rotate #{target.rotate} "
      end
    end
  end
end

class User < ActiveRecord::Base
  has_attached_file :avatar, {
    styles: {
      small: ['72x72#', :png]
    },
    processors: [:rotator]
  }
  attr_accessor :rotate
end