Amazon s3 更改存储在S3服务器上的图像文件的分辨率

Amazon s3 更改存储在S3服务器上的图像文件的分辨率,amazon-s3,imagemagick,Amazon S3,Imagemagick,是否有办法在s3服务器上运行imagemagick或其他工具来调整图像大小。 我知道的方法是首先在我的机器上下载所有图像文件,然后转换这些文件并在s3服务器上重新加载它们。问题是文件数量超过10000个。我不想下载本地机器上的所有文件。 是否有一种方法可以在s3服务器上转换它 看看它: 它是一个库,为s3上传提供了一些功能,包括按需调整大小。s3不能单独对数据进行任意计算(如调整大小) 我建议查看AWS Lambda(可在AWS控制台中获得),这将允许您设置一个小程序(他们称之为Lambda),

是否有办法在s3服务器上运行imagemagick或其他工具来调整图像大小。 我知道的方法是首先在我的机器上下载所有图像文件,然后转换这些文件并在s3服务器上重新加载它们。问题是文件数量超过10000个。我不想下载本地机器上的所有文件。 是否有一种方法可以在s3服务器上转换它

看看它:


它是一个库,为s3上传提供了一些功能,包括按需调整大小。s3不能单独对数据进行任意计算(如调整大小)

我建议查看AWS Lambda(可在AWS控制台中获得),这将允许您设置一个小程序(他们称之为Lambda),以便在S3存储桶中发生某些事件时运行。您不需要设置VM,只需要指定几个文件,以及一个特定的入口点。该程序可以用几种语言编写,即node.js python和java。您可以从控制台的web GUI完成所有操作

通常,这些设置是为了在上传的新文件上计算内容。要为S3上已经存在的文件触发程序,必须“强制”S3为已经存在的文件发出一个可以挂接的事件。名单是。强制S3复制可能就足够了(将a复制到B,删除B),S3重命名操作(将a重命名为a.tmp,将a.tmp重命名为a),以及创建新的S3对象都可以。实际上,您只是以一种导致Lambda触发的方式插入现有文件。您也可以手动调用Lambda

此示例显示如何在S3上自动生成图像的缩略图,您可以根据调整大小的需要进行调整,并重新使用以创建Lambda:

此外,以下是有关如何使用某些S3事件配置lambda的演练:


另一种选择不是更改分辨率,而是使用一种在访问图像时可以动态转换图像的服务,例如:


还可以在亚马逊的compute博客上查看以下文章。。我发现自己在这里,因为我有同样的问题。我想我将在Lambda中实现它,这样我就可以指定大小,看看这是否有帮助。我的问题是s3上有2MB的图像文件。。我不希望他们在全分辨率,因为我有一个应用程序,是检索他们,它需要一段时间,有时为手机拉下来一个2MB的图像。但是我不介意以完全分辨率存储它们,如果我可以通过在URL中指定它来获得不同的大小。轻松点


我有将要上传的新文件的解决方案。我想转换服务器上已存储的文件。因此,您可以将其作为本地驱动器装载到pc上,并使用任何大容量图像编辑器编辑文件。我认为这是最简单的方法去做ithai sanjeev,你有什么解决方案,我正在努力解决这个问题,调整大小和改变分辨率的新上传图像到S3链接是不够的,你需要在你的答案内容只是试图帮助。。所有的内容都在那篇文章里,我为什么要在这里重复呢?。我几乎从不在stackoverflow上发帖,但我想在这种情况下提供帮助。。抱歉,他想转换服务器上已存储的文件,而不是要上载的新文件。3 blob可以被覆盖,但不能就地编辑。转换时需要从S3下载某种形式的内容,然后再上传回S3。我建议为已经存在的文件触发lambda(避免从云中下载),例如,通过对bucket中已经存在的每个对象的HEAD请求触发。