Класс UImage: изображение RGBA
Класс UImage описывает цветное изображение с 4-я каналами RGBA (int от 0 до 255, тип UMat.Type_8U). Инструкция импорта:
from unicross_image.uimage import UImage
Создание нового изображения
Создать новое изображение позволяет конструктор класса UImage:
UImage(width, height, color=None, create_arr=True)
Параметры width и height задают ширину и высоту изображения соответственно. Если ширина или высота меньше 1 или больше 8000, то будет сгенерировано исключение ValueError. Если параметр color имеет значение None (значение по умолчанию), то изображение будет белого цвета. Пример создания нового изображения белого цвета с шириной 3px и высотой 2px:
from unicross_image.uimage import UImage
img = UImage(3, 2)
print(img) # UImage(width=3, height=2)
print(img.arr)
# [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
# 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
Если в параметре color передать объект класса UColor с характеристиками цвета, то изображение будет залито этим цветом. Создадим полупрозрачное изображение красного цвета с размерами 3x2px:
from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
img = UImage(3, 2, UColor(255, 0, 0, 128))
print(img) # UImage(width=3, height=2)
print(img.arr)
# [255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128,
# 255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128]
Можно обернуть уже существующий список в объект изображения. Чтобы не создавать лишний список, в параметре create_arr следует передать значение False. При этом объект станет не валидным, так как длина пустого списка не будет соответствовать параметрам изображения. Чтобы обновить длину списка, после добавления существующего списка в атрибут arr необходимо вызвать метод update_arr_len(). Проверить объект на валидность можно с помощью метода is_valid(). Пример:
from unicross_image.uimage import UImage
arr = [255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128,
255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128]
img = UImage(3, 2, create_arr=False)
print(img.arr) # []
print(img.get_arr_len()) # 0
img.arr = arr # Добавляем существующий список
print(img.is_valid()) # False
img.update_arr_len() # Обновление данных
print(img.is_valid()) # True
print(img.get_arr_len()) # 24
print(img.arr)
# [255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128,
# 255, 0, 0, 128, 255, 0, 0, 128, 255, 0, 0, 128]
Важно понимать, что метод update_arr_len(). не делает объект валидным, он всего лишь обновляет внутренний размер списка. Объект станет валидным только в том случае, если длина списка соответствует параметрам изображения. Контроль за соблюдением валидности лежит на плечах программиста. Длина списка вычисляется по следующей формуле:
arr_len = width * height * 4
Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage