Как перед сохранением картинки на диск изменить её разрешение?

import os, requests
from requests.auth import HTTPDigestAuth

# в file_dir лежит дериктория куда сохранять файл и его название типо: static/snapshots/123.jpg



def download_image(image_url, file_dir, username, password, cam_cnt, cam_ip):
    response = requests.get(image_url, stream=True, timeout=10, auth=HTTPDigestAuth(username, password))

    if response.status_code == 200: #проверяем доступность сайта
        directory = os.path.dirname(file_dir)
        if not os.path.exists(directory): # создаём дерикторию если её нету
            os.makedirs(directory)

        with open(file_dir, "wb") as fp: # сохраняем картинку (как перед сохранением изменить разрешение картинки?)
            fp.write(response.content)

Ответы (1 шт):

Автор решения: Vladimir Ignatenko

Да, вы можете сначала изменить размер картинки, загрузив ее из памяти, а потом сохранить её в файл.

В response.content у вас данные картинки. В file_dir имя файла для сохранения.

# оборачиваем данные в BytesIO чтобы открыть изображение, как бы из файла
jpgdata = BytesIO(response.content)
# открываем изображение
img = Image.open(jpgdata)
# проводим действия с изображением (в данном случае просто уменьшаем до 100x100 без учета пропорций
img = img.resize((100, 100), Image.Resampling.LANCZOS)
# сохраняем результат в файл
img.save(file_dir)

Код примерный, но думаю логика понятна. А детали уже можно уточнить в документации. В том числе и какие модули нужно для этого импортировать.

→ Ссылка