1

我们有很多图像存储在 Amazon S3 存储桶中,我们需要调整它们的大小。因此,我们需要抓取存储桶中的所有图像并一张一张地调整它们的大小(根据它们的方向)。最好的方法是什么?只写一个 ruby​​ 脚本,或者有什么办法吗?

谢谢

4

2 回答 2

2

过去,我在工人阶级中使用了aws-sdk-ruby gemrmagick的组合:

  • 从 S3 本地下载原始文件
  • 适用auto_orient
  • 为 x/y/z 调整大小
  • 将原始版本和新版本重新上传到 S3

每当您收到未来的图像时,您都可以在后台(delayed_job/sideqik/resque/etc)排队这样的过程。

这是一个要点

于 2013-10-07T12:06:59.893 回答
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 非常强大。

参阅此处了解可以使用调整图像大小的各种方式。

你也可以像这样制作缩略图

s3cmd 能够从 s3 路径下载所有文件。而且 ImageMagick 能够进行批处理(尽管示例脚本没有描述它)。如果您希望一次处理一张图像,则应适当修改脚本以进行循环。

另一方面,如果您已经在应用程序中使用回形针,它会附带一些 rake 任务。查看文档

rake paperclip:refresh:thumbnails
于 2013-10-07T12:58:26.157 回答