Рубрики
Без рубрики

Как изменить размер фотографии с Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Иногда вы найдете себя, желая разместить фото. Я обычно хочу сделать это для фотографий, которые я хочу по электронной почте или опубликовать на сайте, так как некоторые из моих изображений могут быть довольно большими. Нормальные люди используют редактор изображений. Я обычно делаю, но для веселья я подумал, что буду смотреть, как это сделать с языком программирования Python.

Самый быстрый способ сделать это – использовать пакет подушки, который вы можете установить с PIP. Как только у вас есть, откройте свой любимый редактор кода и попробуйте следующий код:

from PIL import Image

def resize_image(input_image_path,
                 output_image_path,
                 size):
    original_image = Image.open(input_image_path)
    width, height = original_image.size
    print('The original image size is {wide} wide x {height} '
          'high'.format(wide=width, height=height))

    resized_image = original_image.resize(size)
    width, height = resized_image.size
    print('The resized image size is {wide} wide x {height} '
          'high'.format(wide=width, height=height))
    resized_image.show()
    resized_image.save(output_image_path)

if __name__ == '__main__':
    resize_image(input_image_path='caterpillar.jpg',
                 output_image_path='caterpillar_small.jpg',
                 size=(800, 400))

Здесь мы импортируем Изображение класс от Подушка упаковка. Далее у нас есть функция, которая занимает 3 аргумента: местоположение файла, которое мы хотим открыть, местоположение, которое мы хотим сохранить измененное изображение и кортеж, который представляет новый размер, изображение должно быть, где кортеж – это ширина и высота соответственно Отказ Далее мы открываем наш образ и распечатаем его размер. Затем мы называем объект Image изменить размер () Метод с Размер Текур, в котором мы прошли. Наконец, мы возьмем новый Siz, распечатайте его, а затем показать изображение перед сохранением изменений с измененной резюме. Вот что это выглядит сейчас:

Как видите, метод изменений () не делает каких-либо масштабирования. Мы посмотрим, как это сделать следующим!

Масштабирование изображения

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

from PIL import Image

def scale_image(input_image_path,
                output_image_path,
                width=None,
                height=None
                ):
    original_image = Image.open(input_image_path)
    w, h = original_image.size
    print('The original image size is {wide} wide x {height} '
          'high'.format(wide=w, height=h))

    if width and height:
        max_size = (width, height)
    elif width:
        max_size = (width, h)
    elif height:
        max_size = (w, height)
    else:
        # No width or height specified
        raise RuntimeError('Width or height required!')

    original_image.thumbnail(max_size, Image.ANTIALIAS)
    original_image.save(output_image_path)

    scaled_image = Image.open(output_image_path)
    width, height = scaled_image.size
    print('The scaled image size is {wide} wide x {height} '
          'high'.format(wide=width, height=height))


if __name__ == '__main__':
    scale_image(input_image_path='caterpillar.jpg',
                output_image_path='caterpillar_scaled.jpg',
                width=800)

Здесь мы позволяем программисту пройти на входные и выходные пути, а также нашу максимальную ширину и высоту. Затем мы используем условное, чтобы определить, какой наш максимальный размер должен быть, а затем мы называем Миниатюра () Метод на нашем открытом изображении объект. Мы также проходим в Image.antialias Флаг, который нанесет высококачественный фильтр отбора проб, который приводит к лучшему изображению. Наконец, мы открываем недавно сохраненное масштабированное изображение и распечатайте его размер для сравнения с исходным размером. Если вы открываете масштабированный образ, вы увидите, что соотношение сторон фотографии было сохранено.

Обертывание

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

Связанное чтение