UImage: разделение изображения на каналы и объединение каналов
Разделить изображение на отдельные каналы позволяет статический метод split() из класса UImageChange. Формат метода:
UImageChange.split(<UImage>)
В качестве параметра указывается объект UImage. Метод возвращает кортеж из 4-х элементов (R, G, B, A) или значение None в случае ошибки. Каждый элемент кортежа является объектом UImageGray. При выполнении операции сторонние библиотеки не используются. Пример:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
channels = UImageChange.split(img)
if channels is not None:
red, green, blue, alpha = channels
print(red) # UImageGray(width=500, height=333)
print(green) # UImageGray(width=500, height=333)
print(blue) # UImageGray(width=500, height=333)
print(alpha) # UImageGray(width=500, height=333)
else:
print("Ошибка при выполнении операции")
Если нужно получить только один канал, то можно воспользоваться следующими методами из класса UImageChange:
UImageChange.red_channel(<UImage>)
UImageChange.green_channel(<UImage>)
UImageChange.blue_channel(<UImage>)
UImageChange.alpha_channel(<UImage>)
В качестве параметра указывается объект UImage. Методы возвращают объект UImageGray или значение None в случае ошибки. При выполнении операции сторонние библиотеки не используются. Пример:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
red = UImageChange.red_channel(img)
green = UImageChange.green_channel(img)
blue = UImageChange.blue_channel(img)
alpha = UImageChange.alpha_channel(img)
print(red) # UImageGray(width=500, height=333)
print(green) # UImageGray(width=500, height=333)
print(blue) # UImageGray(width=500, height=333)
print(alpha) # UImageGray(width=500, height=333)
Произвести обратную операцию (собрать изображение из каналов) позволяет статический метод merge() из класса UImageChange. Формат метода:
UImageChange.merge(r, g, b, a)
В качестве параметров указываются объекты UImageGray. Размеры всех объектов должны быть одинаковыми. Метод возвращает объект UImage или значение None в случае ошибки. При выполнении операции сторонние библиотеки не используются. Пример:
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange
img = UImage.load("foto.png")
red, green, blue, alpha = UImageChange.split(img)
img2 = UImageChange.merge(red, green, blue, alpha)
if img2:
print(img2) # UImage(width=500, height=333)
img2.save("test.png")
else:
print("Ошибка при выполнении операции")
Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage