Python/PIL Resize all images in a folder

后端 未结 8 1286
感动是毒
感动是毒 2020-12-08 00:31

I have the following code that I thought would resize the images in the specified path But when I run it, nothing works and yet python doesn\'t throw any error so I don\'t

8条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-08 01:16

    John Ottenlips's solution created pictures with black borders on top/bottom i think because he used

      Image.new("RGB", (final_size, final_size))
    

    which creates a square new image with the final_size as dimension, even if the original picture was not a square.

    This fixes the problem and, in my opinion, makes the solution a bit clearer:

    from PIL import Image
    import os
    
    path = "C:/path/needs/to/end/with/a/"
    resize_ratio = 0.5  # where 0.5 is half size, 2 is double size
    
    def resize_aspect_fit():
        dirs = os.listdir(path)
        for item in dirs:
            if item == '.jpg':
                continue
            if os.path.isfile(path+item):
                image = Image.open(path+item)
                file_path, extension = os.path.splitext(path+item)
    
                new_image_height = int(image.size[0] / (1/resize_ratio))
                new_image_length = int(image.size[1] / (1/resize_ratio))
    
                image = image.resize((new_image_height, new_image_length), Image.ANTIALIAS)
                image.save(file_path + "_small" + extension, 'JPEG', quality=90)
    
    
    resize_aspect_fit()
    

提交回复
热议问题