代码之家  ›  专栏  ›  技术社区  ›  Nishant Singh

调整图像大小时出现逻辑错误

  •  -1
  • Nishant Singh  · 技术社区  · 8 年前

    我正在使用下面的代码,该代码负责使用python的pillow库更改图像分辨率。我正在aws lambda上部署代码。代码运行良好,但在调整大小时存在一个简单的逻辑缺陷。本规范的作用如下: 1、将图像上传到S3 bucket 代码将图像大小调整为两个不同的维度,并将其上载到不同的bucket。

    但是代码以相同的维度上传了这两幅图像,我不明白为什么

    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)
            image.resize(dim)
            image.save(resized_path)
    
    def resize_image_CAT(image_path, resized_path):
        with Image.open(image_path) as image:
            dim=(1920,1080)
            image.resize(dim)
            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')
    

    上载到已调整大小的bucket的2个已调整大小的图像的尺寸相同,即仅第一个resize\u image\u DOG尺寸(3340x2160),但名称正确,请帮助

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  1
  •   Demosthenes    8 年前

    我查看了枕头文档: image.resize() 退货 已调整大小的图像,并且不会更改传递的图像。

    因此,应该

    image = image.resize(dim)