Преобразование объекта UImageGray в строку в формате BWSTR и наоборот
Строка в формате BWSTR может содержать только два значения:
0 — означает черный цвет (соответствует значению 0);
1 — означает белый цвет (соответствует значению 255).
Строки двумерной матрицы записываются слева направо и сверху вниз. Точно так же, как в список arr.
Преобразовать черно-белое изображение, хранимое в объекте UImageGray, в строку в формате BWSTR позволяет статический метод uimagegray_to_bwstr() из класса UMask. Формат метода:
UMask.uimagegray_to_bwstr(<UImageGray>)
В качестве параметра указывается черно-белое изображение. Если изображение не является черно-белым, а также в случае ошибки метод вернет значение None. Пример:
from unicross_image.uimagegray import UImageGray, UMask
img = UImageGray(3, 2)
img.arr = [255, 255, 255, 0, 0, 0]
print(UMask.uimagegray_to_bwstr(img)) # 111000
img.arr = [255, 255, 255, 128, 128, 128]
print(UMask.uimagegray_to_bwstr(img)) # None
Создать объект UImageGray на основе строки в формате BWSTR позволяет статический метод bwstr_to_uimagegray() из класса UMask. Формат метода:
UMask.bwstr_to_uimagegray(<Ширина>, <Высота>, <BWSTR>)
В первом параметре указывается ширина изображения, а во втором — его высота. В третьем параметре задается строка в формате BWSTR. Если операция выполнена успешно, то метод вернет объект UImageGray, а в противном случае — значение None. Пример:
from unicross_image.uimagegray import UMask
bwstr = "111000"
img = UMask.bwstr_to_uimagegray(3, 2, bwstr)
print(img) # UImageGray(width=3, height=2)
print(img.arr) # [255, 255, 255, 0, 0, 0]
bwstr = "222000"
img = UMask.bwstr_to_uimagegray(3, 2, bwstr)
print(img) # None
Сохраним черно-белое изображение в файл, а затем загрузим его из файла и создадим объект UImageGray:
from unicross_image.uimagegray import UImageGray, UMask
img = UImageGray(3, 2)
img.arr = [255, 255, 255, 0, 0, 0]
w, h = img.get_size()
bwstr = UMask.uimagegray_to_bwstr(img)
data = "{0}|{1}|{2}".format(w, h, bwstr)
# Сохранение изображения в файл
with open("test.txt", "w", encoding="utf-8") as f:
f.write(data)
# Загрузка изображения из файла
with open("test.txt", "r", encoding="utf-8") as f:
d = f.read()
a = d.strip().split("|")
w, h = int(a[0]), int(a[1])
img = UMask.bwstr_to_uimagegray(w, h, a[2])
print(img) # UImageGray(width=3, height=2)
print(img.arr) # [255, 255, 255, 0, 0, 0]
Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage