Как получить размер изображения в подушке python после изменения размера?

resized_image = Image.resize((100,200));

Image — это класс Python-Pillow Image, и я использовал функцию resize для изменения размера исходного изображения,

Как мне найти новый размер файла (в байтах) resized_image без сохранения на диск и повторного чтения


person wolfgang    schedule 31.03.2015    source источник
comment
@ОливерВ. О, я имел в виду размер файла изображения, как в байтах   -  person wolfgang    schedule 31.03.2015


Ответы (2)


Файл не нужно записывать на диск. Файл, подобный объекту, делает свое дело:

from io import BytesIO

# do something that defines `image`...   
img_file = BytesIO()
image.save(img_file, 'png')
print(img_file.tell())

Это печатает размер в байтах изображения, сохраненного в формате PNG, без сохранения на диск.

person BlackJack    schedule 31.03.2015
comment
Вы можете использовать альтернативу BytesIO, которая просто подсчитывает без необходимости сохранения вывода: требуемый размер файла" title="Библиотека изображений Python, как сжать изображение до нужного размера файла"> stackoverflow.com/questions/13407717/ - person Mark Ransom; 01.04.2015

Вы не можете. PIL имеет дело с манипуляциями с изображениями в памяти. Невозможно узнать размер, который он будет иметь на диске в определенном формате.

Вы можете сохранить его во временный файл и прочитать размер, используя os.stat('/tmp/tempfile.jpg').st_size

person Sander van Leeuwen    schedule 31.03.2015
comment
Я думаю, что есть способ сохранить в счетчик байтов вместо файла, но я не могу найти этот ответ на данный момент. - person Mark Ransom; 31.03.2015