Добрый день.
Возник вопрос, предположим существует картинка:

необходимо инвертировать цвета фона и изображения чтобы получить такую картинку
Особенность картинки в том что на границе изображения и фона существует "переход", "сглаживание", "называйте как угодно".
Есть идеи?
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Здравствуйте, xakpc, Вы писали:
Против хотлинкинга есть два средства: или дать адрес веб-странички с картинками, или заставить пользователей использовать wget, curl и т.п. качалки с возможностью указывания реферрера. Что я и сделал
После чего отмасштабировал и свёл в одну картинку
X>Особенность картинки в том что на границе изображения и фона существует "переход", "сглаживание", "называйте как угодно".
X>Есть идеи?
Ну и ничего сложного. Картинка монохромная: бело-зелёная, плюс альфа-канал.
Рассмотрим растяжку цветов между точками "насыщенный зелёный" (#128e4d) и "чистый белый" (#ffffff).
Находим, где на этой оси находится цвет каждого пиксела. И простым вычитанием находим дополнительный цвет.
r0,g0,b0 = 0x12, 0x8E, 0x4D
r1,g1,b1 = 0xFF, 0xFF, 0xFF
ri,gi,bi # исходный цвет пиксела
# игнорируем ri и bi
p = 1.0*(gi-b0)/(g1-g0) # положение на оси (0.0 - зелёный, 1.0 - белый)
q = 1.0-p # дополнение
go = g0+q*(gi-g0)/(g1-g0) # вот он, наш дополнительный цвет (зелёный канал)
# то же самое проделываем с красным и синим каналами (используя эту же пропорцию или находя новую независимо)