Главная » 2025 » Ноябрь » 21 » Класс UColor: изменение яркости и насыщенности цвета
22:52
Класс UColor: изменение яркости и насыщенности цвета

Класс UColor: изменение яркости и насыщенности цвета

Изменить яркость или насыщенность цвета позволяют следующие методы из класса UColor:

  • brighter() — создает более яркий цвет;
  • darker() — создает более темный цвет. Пример:
c = UColor(200, 128, 0)
print(c.brighter())
# UColor(red=238, green=152, blue=0, opacity=255)
print(c.darker())
# UColor(red=161, green=103, blue=0, opacity=255)
  • saturate() — создает более насыщенный цвет;
  • desaturate() — создает менее насыщенный цвет. Пример:
c = UColor(110, 135, 60)
print(c.saturate())
# UColor(red=98, green=135, blue=26, opacity=255)
print(c.desaturate())
# UColor(red=121, green=135, blue=93, opacity=255)
  • derive_color() — создает новый цвет, изменяя параметры текущего цвета. Формат метода:
derive_color(hue_factor, saturation_factor, brightness_factor)

В параметрах hue_factor (фактор для цветового тона), saturation_factor (фактор для насыщенности) и brightness_factor (фактор для яркости)  указываются вещественные числа от -1.0 до 1.0. Отрицательные числа уменьшают значения компонентов цвета, а положительные числа — увеличивают значения компонентов цвета. Создадим более темный цвет:

c = UColor(200, 128, 0)
print(c.derive_color(0.0, 0.0, -0.2))
# UColor(red=148, green=95, blue=0, opacity=255)

Нормализация значений

Выполнить нормализацию числовых значений компонентов цвета позволяют следующие статические методы из класса UColor:

  • normal(value) — выполняет нормализацию целочисленного значения в диапазоне от 0 до 255. Если указанное значение не является числом, то генерируется исключение. Пример:
print(UColor.normal(0))   # 0
print(UColor.normal(-20)) # 0
print(UColor.normal(128)) # 128
print(UColor.normal(255)) # 255
print(UColor.normal(300)) # 255
  • normal_float(value) — выполняет нормализацию вещественного значения в диапазоне от 0.0 до 1.0. Если указанное значение не является числом, то генерируется исключение. Пример:
print(UColor.normal_float(0.0))  # 0.0
print(UColor.normal_float(-0.2)) # 0.0
print(UColor.normal_float(0.4))  # 0.4
print(UColor.normal_float(1.0))  # 1.0
print(UColor.normal_float(2.0))  # 1.0

Преобразование между диапазонами

Выполнить преобразование диапазонов значений компонентов цвета позволяют следующие статические методы из класса UColor:

  • int_to_float(value) — выполняет нормализацию целочисленного значения в диапазоне от 0 до 255 и преобразует значение в диапазон от 0.0 до 1.0. Если указанное значение не является числом, то генерируется исключение. Пример:
print(UColor.int_to_float(0))    # 0.0
print(UColor.int_to_float(-20))  # 0.0
print(UColor.int_to_float(128))  # 0.5019607843137255
print(UColor.int_to_float(255))  # 1.0
print(UColor.int_to_float(300))  # 1.0
  • float_to_int(value) — выполняет нормализацию вещественного значения в диапазоне от 0.0 до 1.0 и преобразует значение в диапазон от 0 до 255. Если указанное значение не является числом, то генерируется исключение. Пример:
print(UColor.float_to_int(0.0))  # 0
print(UColor.float_to_int(-0.2)) # 0
print(UColor.float_to_int(0.5))  # 127
print(UColor.float_to_int(1.0))  # 255
print(UColor.float_to_int(2.0))  # 255

Статические методы для работы с кортежами

Класс UColor содержит следующие статические методы, работающие с кортежами:

  • hex_to_rgb(<Строка>) — позволяет указать цвет в виде строки, состоящей из шестнадцатеричных значений. Например: "#ffffff", "#fff". Метод возвращает кортеж из 3-х значений  (red, green, blue) в диапазоне от 0 до 255. Пример:
print(UColor.hex_to_rgb("#fff"))    # (255, 255, 255)
print(UColor.hex_to_rgb("#00ffff")) # (0, 255, 255)

Если строка содержит ошибки, то метод вернет черный цвет:

print(UColor.hex_to_rgb("#fffps")) # (0, 0, 0)
  • rgb_to_hex(red, green, blue) — возвращает значение в виде строки, состоящей из шестнадцатеричных значений. Например: "#ffffff". Пример:
print(UColor.rgb_to_hex(255, 255, 255))    # #ffffff
print(UColor.rgb_to_hex(0, 255, 255))      # #00ffff
arr = [0, 255, 255]
print(UColor.rgb_to_hex(*arr))             # #00ffff
  • hex_to_rgba(<Строка>) — позволяет указать цвет в виде строки, состоящей из шестнадцатеричных значений. Например: "#ffffff", "#fff". Метод возвращает кортеж из 4-х значений  (red, green, blue, opacity) в диапазоне от 0 до 255. Пример:
print(UColor.hex_to_rgba("#fff"))         # (255, 255, 255, 255)
print(UColor.hex_to_rgba("#00ffff"))      # (0, 255, 255, 255)

Если строка содержит ошибки, то метод вернет черный цвет:

print(UColor.hex_to_rgba("#fffps"))       # (0, 0, 0, 255)
  • name_to_rgba(<Строка>) — позволяет указать название цвета в виде строки. Метод возвращает кортеж из 4-х значений (red, green, blue, opacity) в диапазоне от 0 до 255. Пример:
print(UColor.name_to_rgba("green"))       # (0, 128, 0, 255)
print(UColor.name_to_rgba("жёлтый"))      # (255, 255, 0, 255)

Пример указания прозрачного цвета:

print(UColor.name_to_rgba("transparent")) # (0, 0, 0, 0)
print(UColor.name_to_rgba("прозрачный"))  # (0, 0, 0, 0)

Если цвет не найден, то метод вернет черный цвет:

print(UColor.name_to_rgba("abc"))         # (0, 0, 0, 255)
  • rgb_to_grayscale(<Кортеж>) — создает серый цвет на основе кортежа из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255.. Пример:
print(UColor.rgb_to_grayscale( (0, 128, 0) ))  # 75
  • rgb_to_grayscale_average(<Кортеж>) — создает серый цвет на основе кортежа из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255.. Вычисляется среднее значение. Пример:
print(UColor.rgb_to_grayscale_average( (0, 128, 0) ))  # 42
  • rgb_to_grayscale_saturate0(<Кортеж>) — создает серый цвет на основе кортежа из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255.. Насыщенность цвета становится равна 0. Пример:
print(UColor.rgb_to_grayscale_saturate0( (0, 128, 0) ))  # 128
  • interpolate_rgb(start_value, end_value, t) — создает промежуточные цвета между цветом start_value и цветом end_value в зависимости от значения параметра t (вещественное число от 0.0 до 1.0). В первых двух параметрах указываются кортежи из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255. Пример создания промежуточных цветов между черным и белым цветом:
b = (0, 0, 0)
w = (255, 255, 255)
print(UColor.interpolate_rgb(b, w, 0.2)) # (51, 51, 51)
print(UColor.interpolate_rgb(b, w, 0.5)) # (127, 127, 127)
print(UColor.interpolate_rgb(b, w, 0.8)) # (204, 204, 204)
print(UColor.interpolate_rgb(b, w, 1.0)) # (255, 255, 255)
  • RGB2HSV(<Кортеж>) — создает цвет на основе кортежа из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255 и возвращает кортеж из 3-х составляющих (hue, saturation, brightness) цветовой модели HSV (HSB). Компонент hue (значение от 0.0 до 1.0) определяет цветовой тон, saturation (значение от 0.0 до 1.0) — насыщенность, brightness (значение от 0.0 до 1.0) — яркость. Пример:
print(UColor.RGB2HSV( (255, 0, 0) )) # (0.0, 1.0, 1.0)
  • HSV2RGB(<Кортеж>) — создает цвет в цветовой модели RGB на основе кортежа из 3-х составляющих (hue, saturation, brightness) цветовой модели HSV (HSB). Компонент hue (значение от 0.0 до 1.0) определяет цветовой тон, saturation (значение от 0.0 до 1.0) — насыщенность, brightness (значение от 0.0 до 1.0) — яркость. Метод возвращает кортеж из 3-х составляющих (red, green, blue) в диапазоне от 0 до 255. Пример:
print(UColor.HSV2RGB( (0.0, 1.0, 1.0) )) # (255, 0, 0)

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

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