Skip to main content
 首页 » 编程设计

python之需要调整大小并替换 Amazon S3 上的数百万张图片

2025年05月04日10arxive

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

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

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

是否有一种 pythonic 的方式来做到这一点?

请您参考如下方法:

假设我们使用图像库,例如 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/