我的问题很简单:在将图像上传到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)并在之后保存。但那不行。
我怎么能意识到这一点很简单?
答案 0 :(得分:1)
我假设您已经设置了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
可能无法无损转换,因此您可能需要检查图像质量并进行相应调整。