Интент дизайнера: вы сдаёте единственный растровый эталон — баннер-лонгрид, спрайт-полосу или атлас: шов — это видимая линия; сдвиг ICC — внезапный увод цвета; прозрачная кайма на тёмном UI превращается в инцидент. Этот материал — для тех, кто подписывает спецификацию: выбрать на macOS путь без потерь для склейки PNG и закрепить прогоны на удалённом Mac mini M4 с повторяемыми командами.
Перед чтением сверьтесь с чеклистом пиксельного выравнивания Figma → PNG, с дисциплиной sRGB и Display P3 и с матрицей PSD → PNG (sips и ImageMagick) — затем переходите к сборке из нескольких PNG.
Исходные допущения
Склейка увеличивает любой брак на входе: до montage оформите тикет — скрипты приёмки должны отклонять партию заранее.
- Целочисленная геометрия и шаг: тайлы на целых пикселях; суммарная широта ряда равна сумме кусков; при нулевом gutter сетку согласуйте по строкам и столбцам до автоматизации.
- Один цветовой контракт: либо везде встроен sRGB IEC61966-2.1, либо заранее согласованный Display P3 — конверсию делают в дизайн-экспорте или одним проходом CLI, а не «тихо» при склейке.
- Alpha: straight или premultiplied — не смешивать; premultiplied перед склейкой часто разумно развернуть, иначе на тёмном фоне появится «серость».
- Без скрытого ресайза, согласованность кромки: масштаб только согласованными целыми @1x/@2x; у непрозрачного шва RGB слева и справа совпадает, у полупрозрачных градиентов — одинаковая ось и диффузия.
Таблица способов склейки
Выбирайте по ответственности за ICC, сложности сетки и объёму автоматизации, а не «как привыкли в 2018-м».
| Критерий | sips (встроено в macOS) | ImageMagick 7 (склейка в приоритете) | Комментарий |
|---|---|---|---|
| Основная роль | Масштаб, поворот, назначение/встраивание ICC, чтение форматов | montage, +append, цветовой конвейер, композит с альфой |
sips не полноценный верстальщик сетки; чаще шаг до или после IM. |
| Многофайловая сетка | Последовательность без выразительной геометрии — риск ошибок | montage, +append, геометрия |
Строки/столбцы и зазоры — в скрипте; не вручную через Finder. |
| Семантика «без потерь» | Без лишнего перекодирования может сохранить растр | -depth 8/16 как у источника; без случайных фильтров |
Любой resize/CS-трансформ снимает заявку «lossless» с этапа. |
| Дисциплина sRGB | Системное назначение / встраивание ICC | -colorspace sRGB и политика профилей по ТЗ |
Один авторитетный этап конверсии — экспорт из Figma/PS или оговорённый CLI. |
| Прозрачность и кромка | Слабый контроль композита | -alpha on / set, контроль подложки |
Проверяйте на #000 и #FFF — ловите цветовой ореол у альфы (см. FAQ). |
| Пропускная способность (M4) | Очень быстро по одиночным файлам | Каталоговые батчи, параллели по ядрам | В runbook закрепите magick -version и сборку делегатов. |
Примеры команд (подставьте свои пути):
- Ряд одинаковой высоты (горизонтальное слияние):
magick tile_01.png tile_02.png tile_03.png +append -alpha on -colorspace sRGB stitched_h.png - Сетка 2×2 без зазора:
magick montage a.png b.png c.png d.png -tile 2x2 -geometry +0+0 -background none stitched_grid.png - Если по ТЗ ICC вшивается после склейки:
sips -s profile /System/Library/ColorSync/Profiles/sRGB\ Profile.icc stitched_grid.png(путь к профилю уточните на хосте)
Цепочка без сюрпризов: нормализация полей → проверки → склейка → финальный ICC — обратный порядок без согласования запрещён.
Параметры и пороги батча на удалённом M4
Ноутбук — для макетов; зафиксированные версии macOS и инструментов гоняйте ночью на узле. Ниже — базовые go / no-go (брендбук может ужесточить).
- Среда: в лог
sw_vers,magick -version, совместимость libpng с CI. - Размеры: итоговые W×H равны сумме тайлов по осям с погрешностью 0 px; расхождение с manifest — стоп.
- ICC: единый встроенный sRGB или вся партия в согласованном P3; не смешивать профили в одной выдаче.
- Alpha: на непрозрачном шве ΔRGB = 0; у 8-битной альфы в полупрозрачной зоне |Δ| ≤ 1 (премиум — 0).
- Объём и параллелизм: если lossless-оптимизация даёт > суммы входных байт ×1,5 — нужно объяснение; параллели ≤ ядер−1; атомарный
mvизstaging/вrelease/.
Приёмка экспорта
- Сравнение с эталоном: бит в бит с референсом по «без потерь»; шов просматривайте на тёмном и светлом фоне при 400 %.
- Прозрачность и цвет: без цветной каймы на #000/#FFF; у фирменного цвета на шве допуск ΔE зачастую жёстче, чем в центре поля.
- Метаданные и аудит: EXIF по политике; в manifest — sha256, CLI, размеры, подпись ответственного.
FAQ
Шов «светится» или уходит в оттенок? Часто гамма/ICC не совпали или проскочил скрытый resize; выровняйте цветовые ключи ImageMagick и отсутствие повторного «Сохранить как» из Preview с изменением профиля.
Можно ли всё собрать одними sips? Для серьёзной сетки — ImageMagick; sips оставьте для шагов с ICC и точечных операций.
Premultiplied alpha? В обмен с straight — по контракту; если downstream жёстко ждёт premultiplied, это фиксируют отдельным пунктом и версией рендера.
Зачем именно удалённый M4? Зафиксированные версии, предсказуемый тепловой режим и ночные батчи дают повторяемее результат, чем прогоны «когда освободится ноутбук».
Дальше
Отдайте лонгриды и спрайты на выделенный удалённый Mac, чтобы команда поддерживала один контур ICC и альфы. Страницы аренды и покупки, тарифов и узлов и помощи по SSH и VNC можно открыть без входа в аккаунт; обзор сервиса — на главной MacPng, ещё материалы по дизайну и PNG — в разделе Технические идеи.
Склейка без потерь на фиксированном M4
Версии ImageMagick и sips закреплены, ночные партии и manifest — шов и оттенок переживают релизы без сюрпризов.