Чтобы получить значения пикселей из CGImage, я использую CGContextDrawImage (как описано здесь: Как получить данные пикселей из UIImage (Cocoa Touch) или CGImage (Core Graphics)? ).Единственное отличие состоит в том, что я создаю контекст с плавающей точкой 128 бит / бит, а не обычный контекст 32 бит / бит.Исходный CGImage, полученный из CGImageSource, создан с опцией kCGImageSourceShouldAllowFloat.Таким образом я надеялся получить доступ к цвету значений плавающего пикселя, согласованному с цветовым пространством моего растрового контекста, и использовать их в дальнейшей обработке изображения.Проблема заключается в том, что полученные данные изображения теряют динамический диапазон.Это можно увидеть в тени, на равнинах голубого неба.Они становятся очерченными и лишенными деталей.Некоторые исследования показали, что проблема возникает в CGContextDrawImage (исходный CGImage содержит полный динамический диапазон, сохранение его с помощью CGImageDestination доказывает это) и после того, как содержимое контекста CGContextDrawImage стало постеризованным.
После еще одного исследования я обнаружил следующее: http://lists.apple.com/archives/quartz-dev/2007/mar/msg00026.html Это привело меня к выводу, что проблема не в моем коде, а в основной графике или в предполагаемом поведении.
Мой вопрос: как правильно получить данные с плавающей запятой из изображения с использованием базовой графики?