有没有办法在s3服务器上运行imagemagick或其他工具来调整图像大小。 我知道的方法是首先下载我机器上的所有图像文件,然后转换这些文件并在s3服务器上重新上传它们。问题是文件数超过10000.我不想下载本地计算机上的所有文件。 有没有办法在s3服务器上转换它。
答案 0 :(得分:1)
看一下:https://github.com/Turistforeningen/node-s3-uploader。
这是一个提供s3上传功能的库,包括您想要的大小调整
答案 1 :(得分:0)
另一种选择不是改变分辨率,而是使用可以在访问图像时即时转换图像的服务,例如:
答案 2 :(得分:0)
另见亚马逊计算博客上的以下文章..我发现自己在这里,因为我有同样的问题。我想我将在Lambda中实现这个,所以我可以指定大小,看看是否有帮助。我的问题是我在s3上有2MB的图像文件..我不希望它们在全分辨率,因为我有一个应用程序正在检索它们,有时需要一段时间用于手机拉下2MB图像。但我不介意以全分辨率存储它们,如果我可以通过在URL中指定它来获得不同的大小。容易!
答案 3 :(得分:-1)
S3不会单独启用对数据的任意计算(例如调整大小)。
我建议查看AWS-Lambda(可在AWS控制台中使用),这将允许您在S3存储桶中发生某些事件时设置一个小程序(它们称为Lambda)。您无需设置VM,只需指定一些具有特定入口点的文件即可。该程序可以用几种语言编写,即node.js python和java。您可以通过控制台的Web GUI完成所有操作。
通常这些设置用于计算正在上传的新文件的内容。要为S3上已经存在的文件触发程序,您必须“强制”S3发出可以为已有文件挂接的事件之一。列表是here。强制S3副本可能就足够了(复制A到B,删除B),S3重命名操作(将A重命名为A.tmp,将A.tmp重命名为A),并且创建新的S3对象都可以。您基本上只是以导致Lambda触发的方式戳您现有的文件。您也可以手动调用Lambda。
此示例显示如何在S3上自动生成图像缩略图,您可以根据调整大小的需要调整缩略图并重新使用以创建Lambda:
此外,这里是关于如何使用某些S3事件配置lambda的演练:
http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html