Главная » 2025 » Ноябрь » 23 » Класс UHelperTk: взаимодействие с библиотекой Tkinter
23:10
Класс UHelperTk: взаимодействие с библиотекой Tkinter

Класс UHelperTk: взаимодействие с библиотекой Tkinter

Графическая библиотека UImage тесно связана с библиотекой Tkinter. Выполнить   преобразование между объектом UImage и объектом  PhotoImage из библиотеки Tkinter позволяет класс UHelperTk. Инструкция импорта:

from unicross_image.uhelper_tk import UHelperTk

Преобразование объекта UImage в объект PhotoImage

Преобразовать объект UImage в объект PhotoImage из библиотеки Tkinter можно с помощью статического метода uimage_to_photoimage(). Формат метода:

uimage_to_photoimage(<UImage>)

В качестве параметра указывается объект UImage (альфа-канал не учитывается), UImageRGB или UImageGray. Наибольшей скорости выполнения можно достичь только с объектом UImageRGB, т. к. при использовании других объектов выполняется предварительное преобразование в формат RGB. Метод возвращает объект PhotoImage или значение None в случае ошибки. Отобразим изображение в компоненте Canvas:

from unicross_image.uimagergb import UImageRGB
from unicross_image.uhelper_tk import UHelperTk
from tkinter import *

root = Tk()
root.title("Метод uimage_to_photoimage()")
root.geometry("700x450")

canvas = Canvas(bg="white", width=600, height=400)
canvas.pack(anchor=CENTER, expand=1)

img = UImageRGB.load("foto.jpg")
# Преобразование в PhotoImage
img2 = UHelperTk.uimage_to_photoimage(img)

canvas.create_image(10, 10, anchor=NW, image=img2)
root.mainloop()

Статический метод create_photoimage_load_uimage() позволяет создать объект PhotoImage, загружая изображение из файла .uimage. Формат метода:

create_photoimage_load_uimage(<Название файла .uimage>)

Метод возвращает объект PhotoImage или значение None в случае ошибки. Наибольшей скорости выполнения можно достичь только с файлом формата RGB, т. к. при использовании других форматов выполняется предварительное преобразование в формат RGB. Альфа-канал при загрузке отбрасывается. Отобразим изображение из файла foto.uimage  в компоненте Canvas:

from unicross_image.uhelper_tk import UHelperTk
from tkinter import *

root = Tk()
root.title("Метод create_photoimage_load_uimage()")
root.geometry("700x450")

canvas = Canvas(bg="white", width=600, height=400)
canvas.pack(anchor=CENTER, expand=1)

# Загрузка из файла и преобразование в PhotoImage
img2 = UHelperTk.create_photoimage_load_uimage("foto.uimage")

canvas.create_image(10, 10, anchor=NW, image=img2)
root.mainloop()

Преобразование объекта PhotoImage в объект UImage

Преобразовать объект PhotoImage из библиотеки Tkinter в объект UImage можно с помощью статического метода photoimage_to_uimage(). Формат метода:

photoimage_to_uimage(<PhotoImage>)

В качестве параметра указывается объект PhotoImage из библиотеки Tkinter. Метод возвращает объект класса UImage (альфа-канал будет содержать значения 255) или значение None в случае ошибки. Объект PhotoImage привязывается к объекту окна, поэтому при отсутствии объекта окна генерируется исключение. Пример преобразования:

from unicross_image.uhelper_tk import UHelperTk
from tkinter import *

root = Tk()
root.title("Метод photoimage_to_uimage()")
root.geometry("700x450")

canvas = Canvas(bg="white", width=600, height=400)
canvas.pack(anchor=CENTER, expand=1)

img = PhotoImage(file="foto.png")
# Преобразование PhotoImage в UImage
img2 = UHelperTk.photoimage_to_uimage(img)
print(img2)
# UImage(width=500, height=333)

canvas.create_image(10, 10, anchor=NW, image=img)
root.mainloop()

Загрузка и сохранение файлов в формате PNG

Загрузка изображений из стандартных графических форматов в библиотеке UImage выполняется с помощью библиотек PIL и ImageMagick. Если библиотеки PIL и ImageMagick недоступны, то можно загрузить изображение из стандартных графических форматов PNG и GIF с помощью объекта PhotoImage из библиотеки Tkinter. Класс PhotoImage поддерживает также файлы форматов PGM и PPM, но библиотека UImage позволяет загружать и сохранять такие файлы в бинарном формате самостоятельно.

После загрузки изображения из файла можно выполнить преобразование с помощью метода photoimage_to_uimage(), который мы рассматривали в предыдущем разделе:

# Загрузка из файла
img = PhotoImage(file="foto.png")
# Преобразование PhotoImage в UImage
img2 = UHelperTk.photoimage_to_uimage(img)
print(img2) # UImage(width=500, height=333)

При этом существует также возможность непосредственной работы с файлами формата PNG. Для этой цели предусмотрены следующие статические методы.

  • load_png(<Путь>) — загружает изображение в формате PNG из файла и возвращает объект класса UImage (альфа-канал будет содержать значения 255) или значение None в случае ошибки. Объект PhotoImage привязывается к объекту окна, поэтому при отсутствии объекта окна метод вернет значение None. Пример загрузки:
# Загрузка из файла и преобразование PhotoImage в UImage
img2 = UHelperTk.load_png("foto.png")
print(img2)
# UImage(width=500, height=333)

Вместо метода load_png() можно воспользоваться аналогичным методом create_uimage_from_png(<Путь>), но он очень медленный из-за метода get() класса PhotoImage:

# Загрузка из файла и преобразование PhotoImage в UImage
img2 = UHelperTk.create_uimage_from_png("foto.png")
print(img2)
# UImage(width=500, height=333)
  • save_png_rgb(<UImage>, <Путь>) — сохраняет изображение из объектов UImage (альфа-канал не учитывается), UImageRGB или UImageGray в файл в формате PNG. Метод возвращает значение True, если операция выполнена успешно, и False — в противном случае.  Объект PhotoImage привязывается к объекту окна, поэтому при отсутствии объекта окна метод вернет значение False. Пример:
im = UImageRGB.load("foto.jpg")
# Преобразование в PhotoImage и сохранение в файл
print(UHelperTk.save_png_rgb(im, "foto2.png"))
# True

Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage

Категория: UImage | Просмотров: 5 | Добавил: unicross | Теги: UImage, PhotoImage, UHelperTk, Tkinter | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [18]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Ноябрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей