Это учебный материал по PyCairo, с которым вы можете освоить как базовые, так и углубленные темы библиотеки Cairo 2D на языке Python. Для разработки будущих программ, в большей части примеров мы воспользуемся бэкэндом Python GTK. Изображения, используемые в данном учебном материале можно скачать здесь.
Компьютерная графика
Существует два вида компьютерной графики: векторная и растровая. В растровой графике изображение представлено в качестве набора пикселей. В векторной графике изображение представлено в виде геометрических примитив, таких как: точки, линии, кривые и полигоны. Данные примитивы формируются при помощи математических уравнений.
Оба вида компьютерной графики имеют свои плюсы и минусы.
Преимущества векторной графики над растровой заключаются в следующем:
- Маленький размер;
- Возможность масштабирования до бесконечности;
- При перемещении, масштабировании, заполнении и вращении качество изображения не теряется.
Cairo
Cairo – это библиотека, используемая при создании 2D графики, написанная на языке программирования С. Библиотека также может работать в связке со следующими языками программирования, такими как Python, Perl, C++, C#, и Java. Cairo является мультиплатформенной библиотекой, работающей с такими ОС как Linux, BSDs, Windows и OSX. Cairo поддерживает различные бэкэнды, являющиеся средствами для отображения созданной графики.
- X Window System
- Win32 GDI
- Mac OS X Quartz
- PNG
- PostScript
- SVG
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Это значит, что мы можем воспользоваться данной библиотекой для создания графики в Windows, Linux, OSX, а также создавать файлы в форматах PNG, PDF, PostScript, SVG. Caire можно сравнить с библиотекой GDI+ в Windows и Quartz 2D в Mac OS. Cairo является библиотекой с открытым исходным кодом. Начиная с версии 2.8, Cairo является частью системы GTK.
Установка
Debian/ubuntu:
1 2 |
sudo apt-get install python-cairo sudo apt-get install libcairo2-dev |
Fedora
1 |
sudo yum install cairo-devel |
OpenSUSE
1 |
zypper install cairo-devel |
Подробнее как установить (Windows, Mac OS X): https://www.cairographics.org/download/
Терминология
В данном пункте мы приведем несколько ключевых определений и терминов. Для создания изображения в PyCairo, первым делом нам нужно создать контекст рисунка (drawing context). Контекст рисунка включает в себя все параметры, описывающие то, как именно изображение должно быть выполнено. Это включает в себя такие параметры, как ширина линии, цвет, параметры поверхности и многое другое. Это позволяет использовать меньшее количество аргументов для упрощения интерфейса.
- Контур (path) представлен в виде наборов точек для создания примитивных геометрических фигур, таких как линии, кривые и дуги. Существует два вида контуров: открытые и закрытые. В закрытых контурах начальные и конечные точки не пересекаются. В PyCairo мы начинаем с пустого контура. В первую очередь, мы определяем будущий контур, сглаживаем и\или заполняем его. После каждой строки stroke()or fill() контур становится пустым и мы можем сформировать новый. Если нам нужно сохранить уже существующий контур для дальнейшего рисования, мы можем воспользоваться командами stroke_preserve() и fill_preserve(). Контур состоит из подконтуров;
- Source (исходник) — это инструменты, которые мы используем при рисовании. Это можно сравнить с карандашом или ручкой, которые мы используем при заполнении контуров и рисовании фигур. Существует четыре вида базовых исходников: цвета, градиенты, узоры и изображения;
- Поверхность (surface) – пространство, в котором выполняется рисование. Мы можем выполнять рендеринг файлов, пользуясь поверхностями PDF или PostScript. Для рисования непосредственно на платформе, применяются поверхности Win32 и Xlib;
Перед началом рисования на поверхности, исходник необходимо фильтровать. Mask (маска) используется в качестве фильтра. Она определяет, где будет или не будет применяться исходник. Непрозрачные части маски позволяют копировать исходник, прозрачные, в свою очередь, не позволяют копировать исходник на поверхность; - Шаблон (pattern) отображает исходник во время рисования на поверхности. В PyCairo, шаблон можно использовать в качестве исходника или маски при рисовании. Шаблоны могут быть градиентными, сплошными или поверхностными.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»