Статьи

Управление изображениями с помощью библиотеки изображений Python

В моей предыдущей статье о советах по экономии времени для Pythonists я упоминал, что Python — это язык, который может вдохновлять любовь пользователей .

Одной из причин этого является число экономящих время библиотек, доступных для этого языка. Хорошим примером является библиотека изображений Python (PIL) , которая является основной темой этой статьи.

Что вы можете сделать с PIL

PIL — это бесплатная библиотека, которая добавляет в ваш интерпретатор Python возможности обработки изображений и поддерживает ряд форматов файлов изображений, таких как PPM, PNG, JPEG, GIF, TIFF и BMP.

PIL предлагает несколько стандартных процедур для обработки / обработки изображений, таких как:

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

ПИЛ и Подушка

Одна из проблем PIL заключается в том, что его последняя версия 1.1.7 была выпущена в 2009 году и поддерживает только Python 1.5.2–2.7. Хотя сайт PIL обещает выход следующей версии для Python 3.X, его последняя фиксация была в 2011 году, и похоже, что разработка была прекращена.

К счастью, еще не все потеряно для пользователей Python 3.X. Проект под названием Pillow разветвил репозиторий PIL и добавил поддержку Python 3.X. Учитывая, что большинство читателей, вероятно, будут работать с Python 3.X, я сосредоточусь на обновлении Pillow в этой статье.

Установка подушки

Поскольку Pillow поддерживает версии Python до Python 2.4, я сосредоточусь только на установке Pillow, а не на более старой версии PIL.

Python на Mac

В настоящее время я пишу это руководство для Mac OS X Yosemite 10.10.5 и, таким образом, опишу, как установить Pillow на компьютер Mac OS X. Но, не волнуйтесь, в конце этого раздела я предоставлю ссылку, которая описывает, как установить Pillow на другие операционные системы.

Я просто хочу отметить, что Mac OS X поставляется с предустановленным Python. Тем не менее, версия, скорее всего, будет до 3.X.

Например, на моем компьютере, когда я запускаю $ python --versionPython 2.7.10

Питон и пипс

Очень простой способ установить подушку — через пипс .

Если на вашем компьютере не установлен pip, просто введите следующую команду в своем терминале, и все готово:

 $ sudo easy_install pip

Теперь, чтобы установить подушку, просто введите в своем терминале следующее:

 $ sudo pip install pillow

Это было легко, не так ли?

Как я и обещал, для установки Pillow на другие операционные системы вы можете найти инструкции для этого здесь .

Несколько примеров

В этом разделе я продемонстрирую несколько простых вещей, которые мы можем сделать с помощью PIL.

Я выполню эти тесты на следующем изображении :

кирпичный дом

Если вы хотите следовать этим примерам, загрузите изображение.

Читать изображение

Это самая основная операция в задаче обработки изображения, так как для обработки изображения вы должны сначала прочитать его. С PIL это можно легко сделать следующим образом:

 from PIL import Image
img = Image.open('brick-house.png')

Обратите внимание, что imgopen() , которая является частью модуля PIL Image

Вы также можете прочитать уже открытые файлы, либо из строки, либо из архива tar.

Преобразуйте изображение в оттенки серого, отобразите его и сохраните

Файл brick-house.png Чтобы преобразовать его в оттенки серого , отобразить и сохранить новое изображение в оттенках серого, вы можете просто сделать следующее:

 from PIL import Image
img = Image.open('brick-house.png').convert('L')
img.show()
img.save('brick-house-gs','png')

Обратите внимание, что мы использовали три основные функции для выполнения этой операции: convert() , show() и save() . Поскольку мы хотим преобразовать в изображение в градациях серого, параметр Lconvert()

Вот возвращенное изображение:

кирпичный дом в оттенках серого

Преобразовать в другой тип изображения

Изображение, над которым мы работаем, имеет тип png Скажем, вы хотите преобразовать его в другой тип изображения, например, jpg Эту операцию можно выполнить с помощью функции save()

 from PIL import Image
img = Image.open('brick-house.png')
img.save('brick-image','jpeg')

Изменить размер изображения

Размер (размеры) нашего исходного изображения составляет 440 х 600 пикселей. Если мы хотим изменить его размер и сделать его размером 256 x 256 пикселей, это можно сделать следующим образом:

 from PIL import Image
img = Image.open('brick-house.png')
new_img = img.resize((256,256))
new_img.save('brick-house-256x256','png')

Это создает новое квадратное изображение:

кирпичный дом изменен

Как видите, это сжимает изображение в желаемые размеры, а не обрезает его, что может быть не тем, что вы хотите. Конечно, вы также можете обрезать изображение, сохраняя при этом правильное соотношение сторон.

В заключение

Это краткое введение предназначено только для того, чтобы поцарапать поверхность PIL и продемонстрировать, как легко можно выполнить некоторые сложные задачи обработки изображений в Python через библиотеку PIL.

Многие другие операции, которые вы можете выполнять с помощью этой библиотеки, описаны в обширной документации Pillow , где вы можете прочитать более подробную информацию о проблемах, описанных выше, а также удобные учебные пособия.

Я надеюсь, что это введение вдохновило вас попробовать манипулирование изображениями с помощью Python. Веселиться!