Если вырезанный предмет выглядит чисто на белом фоне, а на тёмном получает светлую кайму, сначала проверьте цвет полупрозрачных пикселей по краю. В них мог остаться прежний белый фон. Альфа-канал сообщает, насколько пиксель прозрачен, но не очищает его цвет автоматически.
Уменьшать непрозрачность всей картинки в такой ситуации бессмысленно: предмет тоже побледнеет. Сжимать маску сразу опасно для тонких деталей. Сначала нужно понять, где возникла кайма — в самом PNG, при уменьшении или уже в оформлении страницы, — и только затем выбирать правку.
Для проверки не нужна сложная фотография. В учебном приложении есть две чёрные фигуры с одинаковой полупрозрачной рамкой. Отличается только цвет этой рамки: у одной он чёрный, у другой светло-серый. На их примере видно, почему два одинаково прозрачных края выглядят по-разному. А затем тот же порядок проверки можно перенести на предметную фотографию, логотип или иллюстрацию.
У края есть и цвет, и прозрачность
Возьмём один пиксель с RGB 0, 0, 0 и второй с RGB 200, 200, 200. У обоих альфа 128 из 255 — приблизительно половинная непрозрачность. Значения RGB определяют цвет, альфа — его вклад при наложении на фон. Чёрный полупрозрачный пиксель не обязан становиться светлым на чёрной подложке. Светло-серый на той же подложке будет заметен.
В таблице приведены результаты учебного расчёта функцией alpha_composite из Pillow. Первый пиксель даёт на чёрном фоне RGB 0, 0, 0, второй — 100, 100, 100. Если такими светло-серыми пикселями окружён чёрный предмет, получится видимая кайма. На белом фоне выходные значения равны соответственно 127 и 227 во всех трёх каналах.
Для одного канала в этом примере можно проверить арифметику: 200 × 128 / 255 + 0 × 127 / 255 ≈ 100. При белой подложке вместо нуля подставляется 255: получится примерно 227. Это расчёт над числовыми значениями каналов в данном примере. Он не обещает тех же чисел для любого редактора: смешивание с учётом другого цветового пространства может дать иной результат.
Существенна сама зависимость: одинаковая альфа не уравнивает разные цвета. В спецификации PNG альфа хранится отдельно, без предварительного умножения цветовых значений. Поэтому проверка «файл действительно прозрачный» ещё ничего не говорит о чистоте полупрозрачной границы.
| Цвет края RGB | Альфа | На чёрном фоне | На белом фоне |
|---|---|---|---|
| 0, 0, 0 | 128 | 0, 0, 0 | 127, 127, 127 |
| 200, 200, 200 | 128 | 100, 100, 100 | 227, 227, 227 |
Откуда возле предмета берётся чужой цвет
На исходной фотографии край объекта часто смешан с фоном. Например, рядом с чёрной поверхностью и белым фоном пограничный пиксель может быть серым. Такое промежуточное значение помогает передать плавную границу. Если удалить только явно белую область, серый переход останется и проявится после переноса на тёмную подложку.
Adobe описывает подобные остатки фона как fringe pixels и предлагает команды для работы с их цветом. В справке Photoshop отдельно указаны Defringe, Remove White Matte, Remove Black Matte и очистка загрязнения цвета. Их назначение помогает выбрать направление правки, но не заменяет просмотра конкретного контура.
Не любой светлый край нужно удалять. У хромированного предмета может быть настоящий блик, у стекла — светлая грань, у волос — тонкий просвечивающий участок. Сверяйтесь с исходной фотографией. Если полоса повторяет реальное освещение и присутствует внутри предмета, механическая очистка способна сделать изображение менее правдоподобным.
Есть и совсем простая причина: светлая обводка могла быть частью оформления. Перед редактированием маски отключите эффекты слоя или страницы по одному и сравните результат. Так вы не испортите исходник из-за тени, свечения или рамки, добавленной уже после вырезания.
Найдите этап, на котором появилась кайма
Положите экспортированный PNG на белую, чёрную и контрастную цветную подложку. Нужен именно экспорт, который получит читатель, а не только рабочий слой в редакторе. Белая подложка помогает увидеть тёмное загрязнение, чёрная — светлое, цветная показывает участки, которые легко пропустить на нейтральном фоне. Просматривайте одну и ту же проблемную область во всех вариантах.
Сначала смотрите при масштабе 100%, затем в реальном размере размещения. Крупное увеличение полезно для разбора отдельных пикселей, но по нему нельзя оценивать весь предмет: сглаженный край в таком виде неизбежно состоит из переходных ступенек. Рабочий вопрос — заметна ли посторонняя полоса там, где изображение будет использоваться.
Если исходный экспорт чистый, а уменьшенная копия получила кайму, сравните оба файла на одной подложке. Зафиксируйте размеры и способ уменьшения. Теперь задача локализована: нужно разбирать пересчёт изображения, а не заново удалять фон. Из нашего примера с двумя пикселями нельзя установить причину любого дефекта ресайза; он показывает лишь влияние цвета на полупрозрачной границе.
Когда проблема видна только на сайте, откройте сам загруженный файл отдельно от страницы и проверьте на такой же подложке. Убедитесь, что это нужная версия и что браузер не показывает другую по размеру копию. Затем сравните страницу без тени и обводки. Если PNG чистый отдельно на том же фоне, исправление его маски пока не имеет основания.
Для передачи замечания достаточно сохранить два одинаковых фрагмента: исходный файл и проблемный результат. Запишите фон, масштаб и место дефекта. Сообщение «светлая полоса у нижнего края на тёмном фоне при ширине 320 пикселей» даёт исполнителю точку проверки. Общего «плохо вырезано» для этого недостаточно.
Исправляйте цвет и форму раздельно
Когда виноват светлый цвет полупрозрачного края, попробуйте на копии слоя очистку цвета или подходящую команду Matting. Начните с небольшого участка, на котором дефект хорошо виден. После правки проверьте те же три подложки: исчезновение каймы на одной ещё не означает, что изображение стало универсальным.
Сжатие маски меняет форму объекта. Оно может скрыть загрязнённую полосу, но вместе с ней убрать провод, край оправы или часть буквы. Для крупного простого силуэта такая потеря иногда допустима, для тонкого элемента — нет. Оценивать нужно размер детали в пикселях и её значение для изображения, а не одинаково применять одну настройку ко всему контуру.
Не удаляйте все частично прозрачные пиксели. В чистом образце чёрный пиксель с альфа 128 создаёт на белом фоне серый переход. Он помогает краю выглядеть плавным. Если заменить переход резким переключением от полностью непрозрачного к полностью прозрачному, появятся ступеньки. В этой ситуации нужна коррекция постороннего цвета при сохранении полезной прозрачности.
Для волос, стекла и мягкой тени стоит проверять отдельные зоны. У них разная задача: тонкая прядь должна сохранить форму, стекло — просвечивание, тень — плавное растворение. Единая жёсткая обработка контура не учитывает этих различий. Если исходник слишком мал или край уже повреждён, точное восстановление может потребовать другой фотографии или ручной работы; одной командой обещать результат нельзя.
Как проверить исправленный файл
После правки заново экспортируйте PNG и повторите сравнение в размере публикации. Проверьте, что исчезло именно загрязнение, а тонкие детали, блики и форма сохранились. Если картинка нужна только для одной известной подложки, согласуйте её на этой подложке. Если её будут ставить на разные фоны, передайте варианты проверки вместе с файлом.
В архиве ниже сохранены две прозрачные фигуры, их версии на чёрной и белой подложках и результаты численного сравнения. Это специально упрощённая иллюстрация, а не оценка качества какого-либо сервиса удаления фона. Она помогает увидеть, почему край зависит сразу от RGB и альфа, прежде чем разбирать сложную фотографию.
Сохраните рабочую маску и исходное изображение отдельно от готового PNG. Если позже изменятся фон или размер карточки, можно будет вернуться к нужному этапу. Чистый результат здесь определяется вполне конкретно: предмет сохраняет свою форму и материал, а прежняя подложка не проявляется вокруг него посторонней полосой.
