Как сжать изображения в папке, чтобы их общий размер был ниже определенного количества? - PullRequest
0 голосов
/ 22 февраля 2019

Я пишу функцию для программы, которая берет папку, полную изображений (.jpg) и сжимает их до определенного размера в байтах.Я хочу, чтобы вся папка была меньшего размера, поэтому я хочу ограничить размер диска каждого файла.Вот что у меня есть:

from PIL import Image
import os
maxSize = 750000 #750KB, 0.75MB
def file_size(fname):
    statinfo = os.stat(fname)
    return int(statinfo.st_size) ## bytes

def compressFiles(bool):
    if bool==True:
        for filename in os.listdir("."):
            if filename.endswith(".jpg"):
                print(filename,"Initial Size:",file_size(filename))
                while file_size(filename) >= maxSize:
                    foo = Image.open(filename)
                    foo.save(filename,quality=95)
                print(filename,"Final Size:",file_size(filename))

Вот что он выводит,

Initial Size: 120533
Final Size: 120533
Initial Size: 983463

... Затем он продолжает открывать и закрывать следующее изображение размером более 750 КБ, казалось бы, бесконечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...