Языки программирования

Библиотека Tkinter: Изображения

Для работы с изображениями в 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

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()
Будет выведено изображение в главную форму:
Библиотека Tkinter