Главная » 2025 » Декабрь » 10 » UImage: удаление прозрачности и альфа-канала
21:07
UImage: удаление прозрачности и альфа-канала

UImage: удаление прозрачности и альфа-канала

Сделать полупрозрачное изображение непрозрачным не удаляя альфа-канал позволяет статический метод alpha_remove_im() из класса UImageChange. Формат метода:

UImageChange.alpha_remove_im(<UImage>, bgcolor=UColor("white"))

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

from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto.png")
img = UImageChange.rotate(img, 45)
print(img.is_transparent())         # True
img2 = UImageChange.alpha_remove_im(img, UColor("green"))
if img2:
    print(img2)                     # UImage(width=590, height=591)
    print(img2.is_transparent())    # False
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

Преобразовать объект UImage в объект UImageRGB позволяет метод get_uimagergb(bgcolor=None) из класса UImage. Если параметр bgcolor не задан, то альфа-канал при выполнении операции просто отбрасывается. В случае ошибки метод вернет значение None. Пример:

from unicross_image.uimage import UImage
from unicross_image.ucolor import UColor

img = UImage(3, 2, UColor(255, 0, 0, 128))
img2 = img.get_uimagergb()
print(img2)     # UImageRGB(width=3, height=2)
print(img2.arr)
# [255, 0, 0,   255, 0, 0,   255, 0, 0,
#  255, 0, 0,   255, 0, 0,   255, 0, 0]

Если нужно учесть значения из альфа-канала, то можно выполнить наложение на цветную непрозрачную основу. Для этого в параметре bgcolor указывается непрозрачный цвет основы в виде объекта UColor (альфа-канал объекта цвета игнорируется). Операция выполняется с помощью библиотеки  Pillow. Если библиотека Pillow недоступна, то производится попытка выполнить операцию с помощью библиотеки ImageMagick. Если библиотека ImageMagick недоступна, то альфа-канал просто отбрасывается. Если возникла ошибка, то метод вернет значение None. Пример наложения на белую основу:

from unicross_image.uimage import UImage
from unicross_image.ucolor import UColor

img = UImage(3, 2, UColor(255, 0, 0, 128))
img2 = img.get_uimagergb(UColor("white"))
print(img2)     # UImageRGB(width=3, height=2)
print(img2.arr)
# [255, 127, 127,   255, 127, 127,   255, 127, 127,
#  255, 127, 127,   255, 127, 127,   255, 127, 127]

Сделать полупрозрачное изображение непрозрачным и удалить альфа-канал позволяет статический метод alpha_off_im() из класса UImageChange. Формат метода:

UImageChange.alpha_off_im(<UImage>, bgcolor=UColor("white"))

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

from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
from unicross_image.uimagechange import UImageChange

img = UImage.load("foto.png")
img = UImageChange.rotate(img, 45)
print(img.is_transparent())      # True
img2 = UImageChange.alpha_off_im(img, UColor("green"))
if img2:
    print(img2)                  # UImageRGB(width=590, height=591)
    print(img2.is_transparent()) # False
    img2.save("test.png")
else:
    print("Ошибка при выполнении операции")

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

Категория: UImage | Просмотров: 7 | Добавил: unicross | Теги: PIL, Python, ImageMagick, UImage | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [80]
Графическая библиотека для Python
UImage C [7]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Декабрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728
293031