我们有很多图像存储在 Amazon S3 存储桶中,我们需要调整它们的大小。因此,我们需要抓取存储桶中的所有图像并一张一张地调整它们的大小(根据它们的方向)。最好的方法是什么?只写一个 ruby 脚本,或者有什么办法吗?
谢谢
我们有很多图像存储在 Amazon S3 存储桶中,我们需要调整它们的大小。因此,我们需要抓取存储桶中的所有图像并一张一张地调整它们的大小(根据它们的方向)。最好的方法是什么?只写一个 ruby 脚本,或者有什么办法吗?
谢谢
过去,我在工人阶级中使用了aws-sdk-ruby gem和rmagick的组合:
auto_orient
每当您收到未来的图像时,您都可以在后台(delayed_job/sideqik/resque/etc)排队这样的过程。
这是一个要点。
也可以使用一个简单的 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 非常强大。
请参阅此处了解可以使用调整图像大小的各种方式。
你也可以像这样制作缩略图
s3cmd 能够从 s3 路径下载所有文件。而且 ImageMagick 能够进行批处理(尽管示例脚本没有描述它)。如果您希望一次处理一张图像,则应适当修改脚本以进行循环。
另一方面,如果您已经在应用程序中使用回形针,它会附带一些 rake 任务。查看文档
rake paperclip:refresh:thumbnails