Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Библиотека PIL. Работа с изображениями в Python

Работа с изображениями в Python

Для работы с изображениями в Python наиболее часто используют библиотеку PIL (Python Image Library). В этой статье рассмотрим базовые возможности данной библиотеки, применяемые наиболее часто. Для установки библиотеки скачивайте файл PIL-1.2.6.win32-py2.6.exe с официального сайта библиотеки а затем запускайте уже знакомую для вас установку. Процесс установки очень прост и в комментариях не нуждается. Чтобы проверить работоспособность библиотеки и узнать удачно ли она установилась, в окне Python Shell редактора IDLE наберите следующий код.

>>> from PIL import Image
>>> Image.VERSION
'1.1.6'

Если вы получили ответ, не важно если версия библиотеки будет другая, главное получить ответ а не ошибку. Получив версию библиотеки вы можете работать с ней, значит она успешно установилась.

Уже более пяти лет мы продаем подарочную упаковку оптом. Вы можете купить упаковка подарочная по очень хорошим ценам. В каталоге вы найдете сотни видов подарочной упаковки.

Загрузка готового изображения

Для открытия файла с готовым изображением применяется функция open(). Функция возвращает объект, с помощью которого производится дальнейшая работа с изображением. Если открыть файл с изображением не удалось, возбуждается исключение IOError. Формат функции:

open(<Путь или файловый объект>[, mode='r'])

В первом параметре можно указать абсолютный путь или относительный путь к изображению. Откроем файл Forest-large.jpg, который расположен в том же рабочем каталоге, что и сам скрипт.

>>> img = Image.open("Forest-large.jpg")

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

>>> f = open("foto.gif", "rb") # Открываем файл в бинарном режиме
>>> img = Image.open(f)        # Передаем объект файла
>>> img.size                   # Получаем размер изображения
(800, 600)
>>> f.close()                  # Закрываем файл

Если изображение было загружено в какую-либо переменную, то можно создать файловый объект с помощью модуля StringIO и передать его в функцию open(). Язык программирования Python имеет много интересных библиотек для работы с видео, музыкой и обработка профессиональных фотографии. Работая над длинной программой код будет удлинятся все глубже и на маленьком экране ноутбука неудобно писать длинные программы. Чтобы расширить свою зону видимости кода нужно подключить второй монитор к ноутбуку и работать уже на широком 22 дюймовом мониторе. Тогда при редактировании видео и изображении на Python ваш результат будет лучше анализированным визуально на широком мониторе чем на ноутбуке.

Загрузка изображения из строки

>>> f = open("foto.gif", "rb") # Открываем файл в бинарном режиме
>>> i = f.read()               # Сохраняем изображение в переменной
>>> f.close()                  # Закрываем файл
>>> import StringIO            # Подключаем модуль StringIO
>>> img = Image.open(StringIO.StringIO(i)) # Передаем объект
>>> img.format                 # Выводим формат изображения
'GIF'

Как видно из примера, формат изображения определяется автоматически. Следует также заметить, что после открытия файла с помощью функции open() само изображение не загружается сразу в память из файла. Загрузка изображения производится при первой операции с изображением. Загрузить изображение явным образом позволяет метод load(). Хотя в большинстве случаев это делать не нужно. Начиная с версии 1.1.6 метод load() возвращает объект, с помощью которого можно получить доступ к определенным пикселям изображения.

Комментариев: 6
  1. Уже давно доступна библиотека PIL версии 1.1.7, большой разнице нет но все равно лучше работать с последними версиями библиотек. Фиксы багов уже более менее учтены.

  2. Как подключить PIL к Python 3.3? Существующие версии предназначены только для Python 2.7 и младше.

  3. артурич | 2014-04-05 в 11:45:39

    можно, вот

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#pilow

  4. Григорий Журавлев | 2014-08-27 в 14:39:14

    Есть двумерный массив, как из него сделать изображение?

  5. КАК ЕГО УСТАНОВИТЬ?! ВЫ МОЖЕТЕ НОРМАЛЬНО ОБЪЯСНИТЬ?! КАК УСТАНОВИТЬ PIL?????????

  6. Аноним | 2021-01-15 в 07:39:07

    User6398, мне помогло вот это видео - https://www.youtube.com/watch?v=0eA0hmyUSP0