You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda中Pillow图片缩放逻辑错误:生成同尺寸图片求助

问题解决:Pillow缩放图片尺寸无效的原因与修复方案

我一眼就看出问题所在啦——你在使用Pillow的resize()方法时犯了一个非常常见的小疏忽!

问题根源

Pillow的Image.resize()方法不会直接修改原图像对象,它会返回一个调整尺寸后的新图像实例。你当前的代码里只是调用了image.resize(dim),但没有将这个返回的新图像赋值给变量,最后保存的依然是原始尺寸的图片,这就导致两张输出图的尺寸完全一致,和你预期的两种尺寸不符。

修复后的代码

只需要修改两个缩放函数,把resize()返回的新图像赋值给变量后再保存即可:

from __future__ import print_function
import boto3
import os
import sys
import uuid
from PIL import Image
import PIL.Image

s3_client = boto3.client('s3')

def resize_image_DOG(image_path, resized_path):
    with Image.open(image_path) as image:
        dim=(3840,2160)
        # 接收resize返回的新图像实例
        resized_image = image.resize(dim)
        resized_image.save(resized_path)

def resize_image_CAT(image_path, resized_path):
    with Image.open(image_path) as image:
        dim=(1920,1080)
        resized_image = image.resize(dim)
        resized_image.save(resized_path)

def handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
        upload_path_1 = '/tmp/resized-{}{}'.format('test1',key)
        upload_path_2 = '/tmp/resized-{}{}'.format('test2',key)
        s3_client.download_file(bucket, key, download_path)
        resize_image_DOG(download_path, upload_path_1)
        resize_image_CAT(download_path, upload_path_2)
        s3_client.upload_file(upload_path_1, '{}resized'.format(bucket), key+'xxxhdpi-3840*2160'+'.png')
        s3_client.upload_file(upload_path_2, '{}resized'.format(bucket), key+'xxxhdpi-1920*1080'+'.png')

额外优化提示

如果需要提升缩放后图片的质量,可以给resize()方法加上重采样参数(推荐使用LANCZOS算法,适合缩小或放大图像时保持清晰度):

  • 对于Pillow 9.1.0及以上版本:resized_image = image.resize(dim, resample=Image.Resampling.LANCZOS)
  • 对于旧版本Pillow:resized_image = image.resize(dim, resample=Image.LANCZOS)

这样修改后,你上传到S3的两张图片就会分别是3840×2160和1920×1080的尺寸啦!

内容的提问来源于stack exchange,提问作者Nishant Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:31:30