需要在Amazon S3上调整大小并替换数百万个图像

时间:2013-07-19 17:54:52

标签: python amazon-s3

我目前使用Django作为后端,iOS作为我的前端。用户可以从iOS应用程序拍摄照片并将其上传到Amazon S3。该应用程序为Django提供了图像的URL,以便用户以后可以检索它们。

这是一个非常简单的设置。但是我们最近遇到了一个问题。需要重新调整图像大小,以便用户的下载速度更快。 Django由postgresql数据库支持,该数据库存储所有图像链接。

这会产生另一个问题,因为数据库已经包含指向旧图像的url链接,因此我需要找到一种批量下载特定存储桶中的所有图像的方法,重新调整它们的大小,然后将它们重新上传到S3以替换旧图像的图像名称与旧图像的图像名称相同。

有没有这样做的pythonic方式?

1 个答案:

答案 0 :(得分:1)

我们只想说我们使用图片库,例如Pillow

样本用法:

from PIL.Image import Image, ANTIALIAS

img = Image.open('your_image_filename')
ogn_size = img.size  # gives you a tuple (x, y)

# base on ogn_size do proportional resizing, let's say by 50%. also apply the recommended
# downsizing high quality filter ANTIALIAS
image_half = img.resize( int(ogn_size[0] * 0.5), int(ogn_size[1] * 0.5), ANTIALIAS )

# more stuff to do, such as optimization on save
image_half.save( "your_image_filename_half", optimize=True,quality=80 )

请阅读文档,了解您可以在生产代码库中使用的更多选项和API https://pillow.readthedocs.org/en/latest/