Плохие результаты с альфа-смешиванием исходного кода (холст HTML5)

Изменить: Мне не обязательно нужно решение этой проблемы - скорее, я бы хотел чтобы понять , почему это происходит. Я не понимаю, почему я должен получать такие странные результаты ниже ...

Хотя этот вопрос направлен на проблему, с которой я сталкиваюсь с приложением холста HTML5, я думаю, что проблема менее конкретна.

У меня есть приложение холста HTML5, которое позволяет наносить изображения на экран. Это 32-битные изображения PNG, поэтому я работаю с прозрачностью. Если я штампую очень прозрачное изображение в одном и том же месте много раз (примерно 100), я получаю абсолютно ужасный результат:

http://i.imgur.com/qYY5n.png

Цвет изображения, которое я использую в качестве штампа, - RGB (167 , 22, 22) , а фон, на который я нажимаю, - RGB (255, 255, 255) . Вот исходное изображение, если кому-то интересно:

http://i.stack.imgur.com/Wm9Dx.png

Как вы можете заметить, изображение имеет чрезвычайно низкие уровни альфа-канала. Скорее всего, от 2/255 до 5/255 или около того. Я ожидал того, что если вы несколько раз примените штамп изображения к холсту достаточное количество раз, вы получите пиксели цвета RGBA (167, 22, 22, 255) . К сожалению, я получаю смешанный набор цветов, включая некоторые очень странные области серого со значением RGB (155, 155, 155) .

Я только что загрузил Excel и подключил уравнение для альфа-смешивания исходного кода ( ссылка в Википедии ), и я, кажется, схожусь к RGB (167, 22, 22) после достаточного количества итераций. Мне, вероятно, не хватает чего-то фундаментального об операциях альфа-смешивания и о том, как холст HTML5 реализует композитинг с перекрытием исходного кода ... может ли кто-нибудь помочь мне исправить?

Спасибо!

Примечание: этот вопрос является похоже на мою проблему, но я не Я понимаю, почему я получаю опубликованные здесь результаты.

7
задан Community 23 May 2017 в 12:01
поделиться