Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 298

почерпнуть из этих глав несколько идей или они подтолкнут вас попробовать что-

то новое.

2D-графика

Все языки программирования в какой-то степени работают с компьютерной гра-

фикой. Многие мощные платформы в этом приложении для быстродействия были

написаны на С или С++, но для продуктивности добавлены библиотеки Python.

Начнем с рассмотрения некоторых библиотек для работы с двухмерными изо-

бражениями.

Стандартная библиотека

В стандартной библиотеке содержатся всего несколько модулей, связанных с гра-

фикой. Рассмотрим два из них:

 Imghdr. Этот модуль определяет тип некоторых файлов изображений;

 Colorsys. Этот модуль преобразует цвета между разными системами: RGB, YIQ,

HSV и HLS.

2D-графика

383

Если вы загрузили логотип издательства O’Reilly и сохранили его под именем

oreilly.png, можете запустить этот код:

>>> import imghdr

>>> imghdr.what('oreilly.png')

'png'

Чтобы сделать с графикой в Python что-то серьезное, нужно загрузить сторон-

ние пакеты. Давайте их рассмотрим.

PIL и Pillow

Многие годы Python Image Library (PIL, библиотека изображений Python) (http://

bit.ly/py-image), несмотря на то что ее нет в стандартной библиотеке, является самой

известной библиотекой для обработки двухмерных изображений. Она предше-

ствовала установщикам вроде pip, поэтому был создан «дружественный форк»

с названием Pillow (http://pillow.readthedocs.org/). Код для работы с изображениями

Pillow совместим с кодом PIL, а его документация хороша, поэтому используем его

здесь.

Установить его просто — достаточно ввести следующую команду:

$ pip install Pillow

Если вы уже устанавливали пакеты libjpeg, libfreetype и zlib, они будут обна-

ружены и использованы Pillow. На странице с инструкциями по установке (http://

bit.ly/pillow-install) вы узнаете больше.

Откроем файл изображения:

>>> from PIL import Image

>>> img = Image.open('oreilly.png')

>>> img.format

'PNG'

>>> img.size

(154, 141)

>>> img.mode

'RGB'

Несмотря на то что пакет называется Pillow, вы импортируете его как PIL, чтобы

код был совместим со старым PIL.

Для того чтобы отобразить изображение на экране с помощью метода show()

объекта Image, вы сначала должны установить пакет ImageMagick, описанный в сле-

дующем разделе, а затем попробовать вот что: