[英]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
可能不会进行无损转换,因此您可能需要检查图像质量并进行相应调整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.