Справочник API: Цвет и кодирование
На этой странице рассматривается представление цветов с высокой точностью, форматы пикселей, интерпретация альфа-канала и цветовые пространства.
Color4f
Color4f представляет цвет с использованием четырёх значений с плавающей запятой (RGBA), каждое из которых обычно находится в диапазоне от 0.0 до 1.0. Это обеспечивает гораздо более высокую точность по сравнению с традиционными 8-битными целыми числами.
Конструкторы
new Color4f(r, g, b, a)new Color4f(r, g, b): Непрозрачный цвет (альфа = 1.0).new Color4f(int color): Преобразует стандартное целое число ARGB 8888 в компоненты с плавающей запятой.
Методы
toColor(): Преобразует обратно в целое число ARGB 8888.makeLerp(other, weight): Линейно интерполирует между двумя цветами.
Пример
java
Color4f red = new Color4f(1f, 0f, 0f, 1f);
Color4f halfTransparentBlue = new Color4f(0f, 0f, 1f, 0.5f);
// Использование в Paint
Paint paint = new Paint().setColor4f(red, ColorSpace.getSRGB());ColorType
ColorType описывает, как биты организованы в пикселе (например, порядок каналов и глубина цвета).
Распространённые типы
RGBA_8888: 8 бит на канал, красный канал первый.BGRA_8888: 8 бит на канал, синий канал первый (распространено в Windows).N32: Собственный 32-битный формат для текущей платформы (обычно соответствует RGBA или BGRA).F16: 16-битный половинной точности (half-float) на канал (High Dynamic Range).GRAY_8: один 8-битный канал для оттенков серого.ALPHA_8: один 8-битный канал для масок прозрачности.
ColorAlphaType
ColorAlphaType описывает, как следует интерпретировать альфа-канал.
OPAQUE: Все пиксели полностью непрозрачны; альфа-канал игнорируется.PREMUL: Компоненты цвета умножены на альфа (стандарт для производительности Skia).UNPREMUL: Компоненты цвета не зависят от альфа-канала.
ColorSpace
ColorSpace определяет диапазон (охват) и линейность цветов.
Распространённые цветовые пространства
ColorSpace.getSRGB(): Стандартное цветовое пространство для веба и большинства мониторов.ColorSpace.getSRGBLinear(): sRGB с линейной передаточной функцией (полезно для вычислений/смешивания).ColorSpace.getDisplayP3(): Широкий цветовой охват, используемый современными устройствами Apple.
Методы
isSRGB(): Возвращает true, если пространство является sRGB.isGammaLinear(): Возвращает true, если передаточная функция линейна.convert(to, color): ПреобразуетColor4fиз этого пространства в другое.
Пример использования
java
// Создание ImageInfo с определённым кодированием
ImageInfo info = new ImageInfo(
800, 600,
ColorType.N32,
ColorAlphaType.PREMUL,
ColorSpace.getSRGB()
);