Ruby on rails Rails回形针在上传前旋转图像

Ruby on rails Rails回形针在上传前旋转图像,ruby-on-rails,amazon-web-services,paperclip,Ruby On Rails,Amazon Web Services,Paperclip,我的问题很简单:在将图像上传到AmazonS3之前,我想将其旋转到270°。 我从研究中了解到,我必须使用“处理器”来完成这项工作。我试了很多东西,但都卡住了 我的模型如下所示: has_attached_file :label, :storage => :s3, :bucket => 'my_bucket', :s3_permissions => :private, :s3_credentials => { access_key_id: Rail

我的问题很简单:在将图像上传到AmazonS3之前,我想将其旋转到270°。 我从研究中了解到,我必须使用“处理器”来完成这项工作。我试了很多东西,但都卡住了

我的模型如下所示:

has_attached_file :label,
  :storage => :s3,
  :bucket => 'my_bucket',
  :s3_permissions => :private,
  :s3_credentials => {
    access_key_id: Rails.application.secrets[:aws_access_key_id],
    secret_access_key: Rails.application.secrets[:aws_secret_access_key]
  },
  :s3_host_name => "s3-eu-west-1.amazonaws.com",
  :processors => [:rotator]

  def rotator
    self.rotation = 270
    self.save
  end
我想我误解了这个处理器的位置和工作原理。我想我需要直接把它放到模型中,然后像方法一样调用它?然后我可以将上传图像(self)的旋转设置为270度,然后保存。但那是行不通的


我怎样才能意识到这一点非常简单?

如果您正在这样做,我想您已经设置了ImageMagick。公司接受一大堆的选择。我刚刚在控制台中成功地尝试了
convert screen.jpg-rotate 270.jpg
。对于回形针,您将使用
转换\u选项
这只适用于转换后的图像,因此您需要明确定义一种样式,例如用于转换的原始样式、拇指样式等。下面是一个示例

has_attached_file :image,
                url:        '/system/:class/:id/:style/image.:extension',
                styles: {
                    original: '650x',
                    thumb: '100x100'
                },
                convert_options: {
                    all: '-rotate 270 -strip -interlace Plane -quality 80%'
                }
需要注意的是,
-rotate
可能不会进行无损转换,因此您可能需要检查图像质量并进行相应调整


那将是
:convert_options=>{:full=>'-rotate 270'}
对于完整图像,不是吗?不工作。您的系统上是否确实安装了ImageMagick?我会亲自在Rails中尝试。我还在
样式
散列中定义了
:thumb
。我不确定默认情况下是否定义了
full
。我想它叫
original
thumb和:show已旋转,但原始图像未旋转。如果你像在我的更新中那样明确定义:原始大小,它应该可以工作。你是我的英雄。谢谢!