Технологии

Слои, маски, каналы, контуры: как устроен XCF внутри

Снаружи .xcf — просто иконка файла. Внутри это аккуратно собранный «торт» из данных: стопка прозрачных слоёв, чёрно-белые маски, каналы цвета и прозрачности, векторные контуры и тысячи маленьких плиток. Разберём формат GIMP по кирпичикам — без жаргона и с пояснением каждого термина.

Сосредоточенный художник рисует на планшете под надписью на стене — образ вдумчивой работы, в которой рождается многослойная структура XCF
За каждым проектом GIMP стоит продуманная внутренняя структура: слои, маски и каналы лежат отдельными «этажами». Фото: Pexels

XCF как многослойный «торт» данных

Если вы уже читали наш разбор, что такое XCF, то знаете главное: это «проект» бесплатного редактора GIMP, а не готовая картинка. Здесь мы заглянем глубже и разберём, из чего именно собран этот проект внутри. Спойлер: XCF хранит не одно изображение, а целый набор объектов, сложенных слоями, как торт.

Файл начинается с короткой служебной «подписи» — слов gimp xcf, по которым программа сразу узнаёт свой формат. Сразу за ней записаны номер версии, размеры холста, тип изображения и список «указателей» — ссылок на то, где в файле лежат слои и каналы. По сути это оглавление, по которому GIMP находит все части проекта. Разберём эти части по очереди.

Коротко

XCF — это контейнер. Внутри лежат слои, маски, каналы и контуры по отдельности, плюс служебные данные. Готовое изображение получается, когда GIMP «складывает» все слои сверху вниз — но в файле они остаются раздельными.

Слои: стопка прозрачных листов

Слой — это основа основ. Представьте стопку прозрачных пластиковых листов, лежащих друг на друге. На одном листе — фон, на другом — персонаж, на третьем — текст. Смотрите сверху — и видите их как единую картинку. Это и есть слои: изображение собирается из них композицией сверху вниз.

Каждый слой в XCF хранит не только пиксели, но и свои настройки:

  • Положение (смещение) — где лист лежит относительно холста. Слой можно двигать, и он не обязан совпадать по размеру со всем изображением.
  • Непрозрачность — от 0 до 100%. Полупрозрачный слой просвечивает, как калька.
  • Видимость — «глазик» рядом со слоем; выключенный слой остаётся в файле, но не участвует в картинке.
  • Режим наложения — правило, по которому слой смешивается с тем, что под ним. «Нормальный» просто перекрывает; «Умножение» затемняет; «Экран» осветляет; «Перекрытие» усиливает контраст.
  • Альфа-канал — необязательная прозрачность самого слоя (о ней ниже).

Именно поэтому в GIMP так удобно править: подвинуть тень, приглушить фон, отключить надпись — всё это меняет один слой, не трогая остальные. А XCF честно запоминает каждую такую настройку.

Иллюстратор рисует многослойного персонажа на планшете с цветовой палитрой — наглядный пример слоёв проекта
Персонаж, тень, контур, фон — в проекте это отдельные слои, и каждый можно править независимо. Фото: Pexels

Маски слоёв: неразрушающее редактирование

Маска — пожалуй, самый недооценённый инструмент. Это чёрно-белая «плёнка», прикреплённая к слою, которая управляет его видимостью по точкам: белое = видно полностью, чёрное = спрятано, серое = частично прозрачно. Маска не трогает сами пиксели — она лишь решает, какие из них показывать.

В этом вся прелесть. Если стереть часть слоя ластиком, пиксели исчезнут навсегда. А если закрасить то же место чёрным на маске — они спрячутся, но останутся целыми. Передумали? Закрасьте маску обратно белым, и пиксели вернутся. Это и называют неразрушающим редактированием: вы меняете картинку, ничего в ней не разрушая.

1

Добавьте маску к слою

GIMP создаёт рядом со слоем чёрно-белую «плёнку». По умолчанию вся белая — значит, слой виден полностью.

2

Рисуйте по маске чёрным

Берёте мягкую кисть и закрашиваете чёрным те участки, которые нужно спрятать. Пиксели слоя при этом целы — скрывается лишь их показ.

3

Возвращайте белым

Передумали? Закрасьте то же место белым — слой снова проявится. Серый даст плавный полупрозрачный переход.

Маски незаменимы для плавных переходов, мягкого совмещения фотографий и аккуратного вырезания объектов. И всё это XCF сохраняет вместе со слоем — открыв проект завтра, вы продолжите ровно с того места, где остановились.

Ластик стирает пиксели навсегда. Маска лишь прячет их — и в любой момент возвращает обратно.

Каналы и альфа: где живёт прозрачность

Любое цветное изображение собрано из трёх каналов — красного, зелёного и синего (R, G, B). Канал — это, по сути, чёрно-белая карта яркости одного цвета: насколько в каждой точке много красного, зелёного, синего. Смешайте три карты — получите полноцветную картинку. XCF хранит эти каналы внутри слоёв.

Но есть и четвёртый, особенный канал — альфа. Он отвечает не за цвет, а за прозрачность: для каждого пикселя альфа говорит, насколько он непрозрачен — от «совсем не видно» до «плотный цвет». Без альфа-канала картинка всегда прямоугольная и без дырок. С ним появляются мягкие края, тени и «вырезанные» объекты на прозрачном фоне. Именно альфу сохраняет PNG, когда вы экспортируете проект.

Сверх стандартных каналов XCF умеет хранить пользовательские каналы. Например, вы выделили сложный объект — и сохранили это выделение как отдельный канал, чтобы вернуться к нему позже. Это удобный способ не терять кропотливую работу по обводке.

Совет

Если объект на картинке должен быть «вырезан» с прозрачным фоном, держите в проекте альфа-канал и экспортируйте в PNG, а не в JPG. JPG не умеет прозрачность и зальёт фон сплошным цветом.

Планшет с цветовым кругом и наброском — наглядное представление каналов цвета и прозрачности
Цвет в файле разложен на каналы R, G, B, а прозрачность хранит отдельный альфа-канал. Фото: Pexels

Контуры: векторные кривые внутри растрового файла

Здесь XCF делает неожиданный ход. Сам по себе формат растровый — то есть состоит из пикселей. Но контуры (пути) он хранит как векторы: не пиксели, а математику.

Контур — это кривая Безье: набор опорных точек, у каждой из которых есть «рычажки» (направляющие), задающие изгиб линии между точками. Звучит сложно, но идея простая: вместо того чтобы запоминать тысячи закрашенных точек, файл хранит несколько координат и формулу кривой. Отсюда два следствия:

  • Независимость от разрешения. Контур можно увеличить хоть до плаката — он останется идеально гладким, потому что это формула, а не пиксели.
  • Точность и гибкость. Контуром удобно обводить сложные объекты. Потом его можно превратить в выделение или «обвести» кистью, получив ровную линию.

То есть в одном файле уживаются два мира: растровые пиксели слоёв и векторные кривые контуров. XCF аккуратно хранит и то, и другое.

Плитки 64×64 и сжатие: инженерное сердце XCF

А теперь — самое инженерное. Как GIMP хранит огромное изображение, не «съедая» всю память? Ответ: он не держит слой одним гигантским куском. Вместо этого каждый слой и канал нарезаются на сетку маленьких квадратов — плиток размером 64×64 пикселя.

Каждая плитка живёт и сжимается отдельно. Базовый алгоритм сжатия — RLE (кодирование длин серий): простой и быстрый способ записать подряд идущие одинаковые пиксели одним числом. Начиная с GIMP 2.10 (2018) доступно более плотное сжатие zlib — тот же движок, что в обычных ZIP-архивах. И всё это без потерь: пиксели сохраняются точь-в-точь.

Зачем такая морока? Плитки дают две большие выгоды. Во-первых, экономия памяти: при работе можно подгружать только видимые плитки, а не всё полотно. Во-вторых, скорость правок: когда вы провели кистью, GIMP пересохраняет лишь те несколько плиток, которых коснулась кисть, а не всё изображение целиком.

64×64
размер плитки в пикселях
8/16/32-бит
точность цвета на канал
2.10
версия GIMP со сжатием zlib

Кстати, о точности. XCF поддерживает разную «глубину» цвета: 8, 16 и 32 бита на канал, причём 32-битный режим хранит цвет особенно точно — это даёт максимально плавные переходы оттенков (градиенты) без видимых полос. Работать формат умеет в режимах RGB, оттенков серого и индексированном (палитра), и при этом встраивает так называемый цветовой профиль (ICC) — это «паспорт цвета», благодаря которому оттенки выглядят одинаково на разных экранах.

Что ещё помнит XCF

Помимо слоёв, масок, каналов и контуров, XCF бережно хранит мелочи, из которых складывается ваше рабочее окружение:

  • Направляющие и сетку — те самые синие линии, по которым вы выравнивали элементы. Они остаются на месте.
  • Активное выделение — если вы что-то выделили и закрыли файл, при открытии выделение будет на месте.
  • «Паразиты» (parasites) — необычное название для произвольных служебных метаданных. GIMP и плагины цепляют их к изображению или слою: например, последние настройки экспорта в JPEG или содержимое текстового слоя.
  • Цветовой профиль — встроенный ICC, чтобы цвета не «уплыли».

Благодаря этому открытый заново проект выглядит ровно так, как вы его оставили — с выделением, направляющими и всеми настройками. Это полноценная «сохранёнка». Кстати, именно богатство этой структуры отличает XCF от формата Photoshop — мы сравнивали их в статье XCF против PSD.

Сигнатура файла
gimp xcf
Размер плитки
64×64 пикселя
Сжатие
RLE / zlib, без потерь
Точность цвета
8 / 16 / 32 бита на канал
Режимы
RGB, серый, индексированный
Векторные контуры
Да (кривые Безье)

Как это превращается в готовую картинку

Вся эта стройная структура — слои, маски, каналы, контуры — нужна, пока вы работаете. Но именно она делает XCF «личным» форматом GIMP: другие программы его толком не открывают, и для публикации он не годится. Чтобы показать результат, проект нужно свести (flatten).

Сведение — это момент, когда GIMP берёт все видимые слои, применяет их маски, режимы наложения и эффекты и «складывает» в одну плоскую картинку. Лучший формат для этого — PNG: он без потерь и, главное, сохраняет тот самый альфа-канал, то есть прозрачность. Все «этажи» вашего торта спекаются в единое изображение, которое откроется где угодно.

Сведите свой XCF в PNG

Бесплатный конвертер FormatZ соберёт все слои, маски и эффекты проекта в одну аккуратную картинку с прозрачностью — прямо в браузере, без установки GIMP.

Конвертировать XCF в PNG

Нужно наоборот — превратить картинку обратно в редактируемый проект? Для этого есть конвертация PNG в XCF. А все доступные преобразования собраны на странице всех форматов. Если хотите начать с азов, вернитесь к статье что такое XCF простыми словами.

Маска ничего не стирает. Это отдельная чёрно-белая «плёнка» поверх слоя: белое показывает пиксели, чёрное прячет, серое делает полупрозрачными. Сами пиксели остаются на месте — закрасьте маску обратно белым, и они снова видны. Если же стереть пиксели ластиком, они исчезают навсегда. Поэтому маски называют неразрушающим редактированием.
Альфа — это дополнительный канал прозрачности рядом с каналами красного, зелёного и синего цвета. Для каждого пикселя он хранит число от «полностью прозрачно» до «полностью непрозрачно». Именно благодаря альфа-каналу у изображения могут быть дырки и мягкие края, а при экспорте в PNG прозрачность сохраняется.
Да. Контуры (пути) — это кривые Безье: опорные точки с «рычажками», заданные математикой, а не пикселями. Поэтому они не зависят от разрешения и остаются редактируемыми. XCF хранит их как формулы; из контура можно сделать выделение или обвести его кистью в любой момент.
GIMP не хранит слой одним огромным куском. Каждый слой и канал нарезаются на сетку квадратов 64×64 пикселя — плиток. Каждая плитка сжимается отдельно (RLE, а с GIMP 2.10 доступен zlib). Это экономит память на больших изображениях и ускоряет работу: при правке трогаются только изменённые плитки, а не всё полотно.
Да. XCF запоминает активное выделение, направляющие и сетку, цветовой профиль, а также «паразитов» — произвольные служебные метаданные, которые GIMP и плагины цепляют к изображению или слою. Поэтому открытый заново проект выглядит ровно так, как вы его оставили.