Для работы с изображениями в Tkinter имеется два класса BitmapImage и PhotoImage. BitmapImage представляет собой простое двухцветное изображение, PhotoImage — полноцветное изображение.
BitmapImage
- background и foreground — цвета фона и переднего плана для изображения. Поскольку изображение двухцветное, то эти параметры определяют соответственно чёрный и белый цвет;
- file и maskfile — пути к файлу с изображением и к маске (изображению, указывающему какие пиксели будут прозрачными);
- data и maskdata — вместо пути к файлу можно указать уже загруженные в память данные изображения. Данная возможность удобна для встраивания изображения в программу.
from tkinter import * data = »’#define image_width 15 #define image_height 15 static unsigned char image_bits[] = < 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x30, 0x0c, 0x60, 0x06, 0x60, 0x06, 0xc0, 0x03, 0xc0, 0x03, 0x60, 0x06, 0x60, 0x06, 0x30, 0x0c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00 >;»’ root=Tk() root.title(«Изображения») root.minsize(width=100, height=100) image = BitmapImage(data=data, background=’red’, foreground=’green’) button=Button(root, image=image) button.pack() root.mainloop()
PhotoImage
Уроки Python / Модуль tkinter (работа с картинками)
PhotoImage позволяет использовать полноцветное изображение. Кроме того у этого класса есть несколько (достаточно примитивных) методов для работы с изображениями. PhotoImage гарантированно понимает формат GIF. Аргументы конструктора:
- file — путь к файлу с изображением;
- data — вместо пути к файлу можно указать уже загруженные в память данные изображения. Изображения в формате GIF могут быть закодированы с использованием base64. Данная возможность удобна для встраивания изображения в программу;
- format — явное указание формата изображения;
- width, height — ширина и высота изображения;
- gamma — коррекция гаммы;
- palette — палитра изображения.
from tkinter import * root = Tk() root.title(«Изображения») def img(): img = PhotoImage(file=»Image.gif») label = Label(root, image=img) label.image_ref = img label.pack() img() root.mainloop()
Будет выведено изображение в главную форму:
Источник: it-black.ru
Pillow обработка изображений в Python на примерах
Библиотека изображений Python, или PIL (Python Imaging Library) нужна для обработки графики в Python. Фредрик Лунд является автором одного из лучших блогов, посвященных Python. Однако он перестал обновляться в далеком 2009 году, незадолго до последнего релиза PIL. К счастью, нашлись разработчики Python, что подхватили проект, создав форк PIL под названием Pillow.
Pillow стал заменой оригинальной библиотеки PIL. Он также поддерживает Python 3, чего PIL так и не достиг.
Обратите внимание на то, что PIL и Pillow не могут быть установлены одновременно. В документации есть определенные предупреждения, где перечисляются различия между PIL и Pillow. Они обновляются время от времени, поэтому лучше ознакомиться с последними изменениями на официальной странице.
Как выводить картинку в приложении [Tkinter] / Уроки Python
Изображения которые используются в уроке:
Установка Pillow в Python
Установить Pillow в Python можно через pip или easy_install . Установка через pip выполняется следующим образом:
Источник: python-scripts.com
Используем Python Pillow для вставки текста и изображения в картинку
Pillow это одна из самых популярных библиотек Python для работы с изображениями. Ранее эта библиотека называлась PIL и последний ее релиз был в 2009, после чего разработчики продолжили ее развитие под названием Pillow. В этой статье будет рассмотрен пример вставки текста и изображения в новую или существующую картинку.
Pillow устанавливается отдельно:
pip install Pillow
Навигация по посту
- Создание и открытие изображения
- Добавление текста к изображению
- Вставка изображения
- Определение высоты и ширины
Создание и открытие изображения
Для открытия и создания изображения используется модуль Image. На следующем примере мы откроем существующее изображение:
from PIL import Image im = Image.open(‘d:/beach.jpeg’) # Откроет изображение в новом окне im.show()
В следующем примере мы создадим изображение, где мы должны указать:
- Цветовую модель. Например RGB,RGBA,CMYK,HCL и т.д.;
- Размер изображения в кортеже;
- По умолчанию изображение создается с черным фоном. Для его изменения нужно заполнить атрибут color.
from PIL import Image im = Image.new(‘RGB’, (200,200), color=(‘#FAACAC’)) # Откроет изображение в новом окне im.show()
Сохранить изображение можно через save:
from PIL import Image im = Image.new(‘RGB’, (200,200), color=(‘#FAACAC’)) im.save(‘D:/new_pic.jpg’)
Вам так же будет интересно:
Модуль Python os — примеры создания и работы с папками и путями
Добавление текста к изображению
Для изменения изображение используется класс ImageDraw. В следующем примере мы создадим объект этого класса с текстом, где нужно указать:
- Расположение текста. В примере ниже это (100, 100);
- Сам текст;
- Цвет текста.
from PIL import Image, ImageDraw im = Image.new(‘RGB’, (200,200), color=(‘#FAACAC’)) draw_text = ImageDraw.Draw(im) draw_text.text( (100,100), ‘Test Text’, fill=(‘#1C0606’) ) im.show()
Если использовать кириллические символы, может появится ошибка:
- AttributeError: ‘ImageFont’ object has no attribute ‘getmask2’
- UnicodeEncodeError: ‘latin-1’ codec can’t encode characters
Для исправления ошибки вы можете использовать свой шрифт через класс ImageFont. Вы так же сможете указать размер шрифта:
from PIL import Image, ImageDraw, ImageFont im = Image.new(‘RGB’, (200,200), color=(‘#FAACAC’)) # Создаем объект со шрифтом font = ImageFont.truetype(‘D:/Roboto/Roboto-Black.ttf’, size=18) draw_text = ImageDraw.Draw(im) draw_text.text( (100, 100), ‘Текст 18px’, # Добавляем шрифт к изображению font=font, fill=’#1C0606′) im.show()
Вставка изображения
Для создания водяного знака, например, откройте второе изображение и используйте функцию paste. При этом первый параметр с watermark будет использовать всю область изображения, а второй установит прозрачность (альфа-канал):
from PIL import Image im = Image.open(‘d:/beach.jpeg’) # Изображение для водяного знака watermark = Image.open(‘d:/logo.png’) im.paste(watermark, (25,25), watermark) im.show()
Определение высоты и ширины
Если вы планируете открывать множество изображений, разных размеров и добавлять текст, например в правый нижний угол вы можете вычислить это местоположение. Объекты Image содержат размеры:
# Ширина и высота im.size # Ширина im.width # Высота im.height
Если вы используете водяные знаки, то можно просто вычесть из основного изображения размеры водяного знака и получить корректное расположение в правом угле:
from PIL import Image im = Image.open(‘d:/beach.jpeg’) watermark = Image.open(‘d:/logo.png’) # Вычисляем расположение watermark position = (im.width — watermark.width, im.height — watermark.height) im.paste(watermark, position, watermark) im.show()
Источник: fixmypc.ru