ruby-on-rails – Rails:从S3下载图像,调整大小并上传回S3

ruby-on-rails – Rails:从S3下载图像,调整大小并上传回S3,第1张

概述在我的Rails 4应用程序中,我使用Paperclip在S3上存储了大量图像.图片网址看起来像 http://s3.amazonaws.com/bucketname/files/images/000/000/012/small/image.jpg?1366900621. 给出以下附件类: >如何从S3下载图像并在本地存储? >然后如何调整本地存储的图像的大小 >将调整大小的图像上传到另一个没有P 在我的Rails 4应用程序中,我使用Paperclip在S3上存储了大量图像.图片网址看起来像 http://s3.amazonaws.com/bucketname/files/images/000/000/012/small/image.jpg?1366900621.

给出以下附件类:

>如何从S3下载图像并在本地存储?
>然后如何调整本地存储的图像的大小
>将调整大小的图像上传到另一个没有Paperclip的S3存储桶(在路径s3 / newbucket / images / {:ID} / {imagesize.jpg})

附件类:

class Image < ActiveRecord::Base  has_attached_file :file,styles: { thumbnail: '320x320',icon: '64x64',original: '1080x1080' }  valIDates_attachment :file,presence: true,content_type: { content_type: /\aimage\/.*\Z/ }end
解决方法 基本建议不是动态调整图像大小,因为这可能需要一段时间,并且您的用户可能会在此 *** 作期间遇到大量响应时间.如果您有一些预定义的样式集,那么提前生成它们并在需要时返回它是明智的.

那么,如果没有其他选择,这就是你可以做的.

def download_from_s3 url_to_s3,filename  uri = URI(url_to_s3)  response = Net::http.get_response(uri)  file.open(filename,'wb'){|f| f.write(response.body)}end

在这里,我们基本上下载了位于给定URL的图像,并将其作为文件保存在本地.调整大小可以通过几种不同的方式完成(这取决于您是否要将下载的文件作为Paperclip附件提供).
这里最常用的方法是使用image-magick及其转换命令行脚本.以下是将图像调整为宽度为30的示例:

convert  -strip -geometry 30 -quality 100 -sharpen 1 '/photos/aws_images/000/000/015/original/index.jpg' '/photos/aws_images/000/000/015/original/S_30_WIDTH__q_100__index.jpg' 2>&1 > /dev/null

你可以找到转换here的文档,它不仅适用于图像大小调整,还适用于图像格式之间的转换,模糊,裁剪等等!另外你可能会对Attachment-on-the-Fly gem感兴趣,这看起来有点过时,但对如何使用转换调整图像大小有一些见解.

最后一步是将调整大小的图像上传到某个S3存储桶.我假设你已经有了aws-sdk gem和AWS :: S3实例(可以找到文档here).

def upload_to_s3 bucket_name,key,file  s3 = AWS::S3.new(:access_key_ID => 'YOUR_ACCESS_KEY_ID',:secret_access_key => 'YOUR_SECRET_ACCESS_KEY')  bucket = s3.buckets[bucket_name]  obj = bucket.objects[key]  obj.write(file.open(file,'rb'),:acl => :public_read)end

因此,在这里您获得一个AWS :: S3对象来与S3服务器通信,提供您的存储桶名称和所需的密钥,并基本上传一个带有选项的图像,以使其对Web上的每个人都可见.请注意,还有许多其他上载选项(包括文件加密,访问权限,元数据等).

总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails:从S3下载图像,调整大小并上传回S3全部内容,希望文章能够帮你解决ruby-on-rails – Rails:从S3下载图像,调整大小并上传回S3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存