Обработка и печать фото

Adobe Photoshop. Прозрачность пикселя.

Возможно ли узнать изначальную прозрачность какого-то пикселя, зная его цветовой код (RGB) и зная цветовой код фона, на который был наложен этот пиксель?
...а это несвязанные вещи, прозрачность (альфаканал) - это третий слой между изображением и фоном, и у него своя цифирь (типа Opacity)
Валерий Таранцов
Валерий Таранцов
54 102
Лучший ответ
Виктория Колюшкина Тогда только на глаз подбирать?
Виктория Колюшкина Так вот вопрос, как это сделать? Куда жамкать то
Даже зная код цвета фона и код цвета элемента ты не можешь быть уверен в точности своего вычисляемого процента прозрачности.
Просто потому, что jpeg это не bmp, и сохраняет цвет НЕ КАЖДОГО пикселя, и стопроцентную непрозрачность фона гарантировать никто не может.
Непонятна сама необходимость подобного извращения... Если тебе требуется в точности воссоздать использованый альфаканал, то учти, что разные программы могут применять по различным алгоритмам! ) Попробуй объяснить этот Фотошоповский прикол с исчезновением прозрачности! )
Павел Итегин
Павел Итегин
68 518
Нет, нельзя однозначно узнать изначальную прозрачность пикселя, зная только его цветовой код (RGB) и цветовой код фона. Прозрачность пикселя определяется в контексте, в котором он находится, и наличием других слоев или элементов.

Цветовая модель RGB не имеет отдельного канала для прозрачности. Обычно в программах, таких как Adobe Photoshop, прозрачность обозначается с помощью дополнительного канала альфа (Alpha), который показывает степень прозрачности каждого пикселя на слое.

Если у вас есть доступ к файлу изображения в формате, который поддерживает альфа-канал (например, PNG), то вы можете открыть его в программе Adobe Photoshop и проверить значение альфа-канала пикселя. Значение альфа-канала обычно находится в диапазоне от 0 (полностью прозрачный) до 255 (полностью непрозрачный). Однако, если информация об альфа-канале в изображении отсутствует, то нельзя точно узнать изначальную прозрачность пикселя только по его цветовому коду RGB и фону.

В общем случае, чтобы узнать изначальную прозрачность пикселя, необходимо иметь доступ к исходному файлу с сохраненными альфа-данными или иметь другую информацию о наложенных эффектах или слоях.
да
конечный цвет бленда при наличии альфа-канала расчитывается по этой простой формуле
 blend = bg*(1-A) + RGB*A
blend = bg-bg*A + RGB*A
blend = bg + (RGB-bg)*A
следовательно, чтобы получить величину альфа-канала, зная исходный RGB-цвет пикселя и зная исходный RGB-цвет фона под ним, нужно применить операцию Subtraction между конечным цветом бленда и фоном, после чего разделить (операция Division ) на разницу пикселя и фона
 blend-bg = (RGB-bg)*A
A = (blend-bg) / (RGB-bg)
alpha = Division(Subtract(blend, bg), Subtract(RGB, bg))
Жансая Абилова
Жансая Абилова
15 114
Павел Итегин Мдя... Я чуть не повёлся! )
Если бы Дениске нужно было создать маску прозрачности имея исходник и эту же картинку с альфаканалом, то этот вариант прекрасно подошёл бы.
Но, судя по формулировке вопроса и по отсутствию всякой реакции на этот ответ, у него другая хотелка. Он хочет маску прозрачности на изображении имея исходник и его же, с частичным изменением прозрачности, но слитым с НЕОДНОРОДНЫМ ФОНОМ. А это уже совсем другая история, не имеющая решения в принципе.