我们有很多图像存储在Amazon S3存储桶中,我们需要调整它们的大小。因此,我们需要抓取存储桶中的所有图像并逐个调整大小(根据其方向)。 最好的方法是什么?只写一个ruby脚本或者有什么方法可以做到吗?
由于
答案 0 :(得分:2)
过去,我在工人类中使用了aws-sdk-ruby gem和rmagick的组合:
auto_orient
每当您收到未来图片时,您都可以在后台(delayed_job / sideqik / resque / etc)排队这样的过程。
这是gist。
答案 1 :(得分:1)
也可以使用简单的shell脚本(带一些外部帮助)
安装s3cmd。它是与s3交互的命令行工具。 安装ImageMagick。这就是rMagic在引擎盖下使用的方法
然后在像这样的shell脚本中使用它
#!/bin/bash
S3CMD=$(which s3cmd)
CONVERT=$(which convert)
#
# Download the file from s3
$S3CMD get s3://mybucket/path/to/image/file.gif
# convert it to thumbnail
$CONVERT file.gif -resize 64x64 resize_file.gif
# upload the thumbnail back to s3
$S3CMD put resize_file.git s3://mybucket/path/to/thumbnails/resize_file.gif
# cleanup
rm file.gif resize_file.gif
注意:上面的示例脚本没有任何错误检查。在执行下一个命令之前,应检查每个命令的状态代码。
ImageMagick非常强大。
请see this以各种方式使用调整图片大小。
您还可以制作缩略图like this
s3cmd能够从s3路径下载所有文件。 ImageMagick能够进行批处理(尽管示例脚本没有描述它)。如果您希望一次处理一个图像,则应适当修改脚本以进行循环。
另一方面,如果您已经在应用程序中使用了paperclip,那么它会带来一些rake任务。查看文档
rake paperclip:refresh:thumbnails