Просто в теории: как альфа-компонент предварительно умножается на другие компоненты PNG в iPhone OS, и как он может быть правильно умножен?

На самом деле, я думал, что будет легкий способ достичь этого. Что мне нужно, так это чистая альфа-информация. Для тестирования у меня есть PNG размером 50 x 55 пикселей, где на каждом краю прямоугольник 5x5 пикселей полностью прозрачен. В этих областях альфа должна быть 0. В любом другом месте она должна быть 255. Я убедился, что мой PNG создан правильно, и он также выглядит правильно.

Пожалуйста, скажите мне, если это теоретически правильно: я создал CGImageRef, который имеет только альфа-канал и ничего больше. Это делается с помощью CGBitmapContextCreate и kCGImageAlphaOnly в качестве параметра. CGBitmapContextGetBitsPerPixel (context) возвращает мне 1, так что это указывает на то, что у меня действительно только один компонент на пиксель: желаемое альфа-значение. Я читал, что CGBitmapContextCreate будет обрабатывать все преобразования из данного изображения в новый созданный контекст. Мое изображение ранее было PNG-24 с прозрачностью, но pngcrunch из Xcode, похоже, как-то их конвертирует.

Итак, просто в теории: есть ли у меня хоть какой-то шанс добраться до правильной, неумноженной альфы на данный момент? Кажется, что значения, которые я получаю, почти совпадают, но в большом прозрачном квадрате 5x5 я получаю значения, такие как 19, 197, 210, 0, 0, 0, 98 и так далее. Если бы они были правдой, я бы увидел что-то на картинке. Само изображение сплошное синее.

Ответы на вопрос(3)

Ваш ответ на вопрос