Rails 回形针在上传前旋转图像
Rails Paperclip rotate image before uploading
我的问题很简单:在将图像上传到 Amazon S3 之前,我想将其旋转 270°。
我从研究中了解到我必须使用 "processor" 来执行此操作。例如。我尝试了很多东西但都卡住了。
我的模型是这样的:
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 command 接受一大堆选项。我刚刚在控制台中成功尝试 convert screen.jpg -rotate 270 270.jpg
。对于 Paperclip,您将使用 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
可能无法无损转换,因此您可能需要检查图像质量并进行相应调整。
我的问题很简单:在将图像上传到 Amazon S3 之前,我想将其旋转 270°。 我从研究中了解到我必须使用 "processor" 来执行此操作。例如。我尝试了很多东西但都卡住了。
我的模型是这样的:
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 command 接受一大堆选项。我刚刚在控制台中成功尝试 convert screen.jpg -rotate 270 270.jpg
。对于 Paperclip,您将使用 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
可能无法无损转换,因此您可能需要检查图像质量并进行相应调整。