繁体   English   中英

Rails回形针在上传之前旋转图像

[英]Rails Paperclip rotate image before uploading

我的问题很简单:在将图像上传到Amazon S3之前,我想将其旋转到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

我想我误解了该处理器的放置位置以及其工作原理。 我以为我需要直接将其放入模型中,并且像方法一样被调用? 然后,我可以将上传图像(自身)的旋转度设置为度数(270),然后保存。 但这行不通。

我怎么能这么简单?

我假设您已经设置了ImageMagick。 convert命令接受很多选项。 我刚尝试在控制台中成功convert screen.jpg -rotate 270 270.jpg 使用回形针,您将使用convert_options 这仅适用于转换后的图像,因此您需要显式定义样式,例如原始,拇指等进行转换。 这是一个例子。

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可能不会进行无损转换,因此您可能需要检查图像质量并进行相应调整。

旋转270度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM