Я ищу способ проверить предоставленные данные цветового профиля ICC CGColorSpace
' s метод copyICCData()
.
В частности, я загружаю изображения PNG в UIImage
на iOS и пытаюсь найти способ использования let iccData:CFData? = aUIImage.cgImage!.colorSpace!.copyICCData()
для определения гаммы файла изображения. Это для игры, в которой используется 3D-рендеринг - если исходное изображение имеет стандартную гамму 2,2, я загружаю данные изображения в текстуру как sRGB (например, MTLPixelFormatRGBA8Unorm_sRGB
), и если она имеет гамму 1.0 Вместо этого я загружу его как линейную текстуру (например, MTLPixelFormatRGBA8Unorm
).
Примечание: решение просто передать _7 _ / _ 8_ в систему рендеринга (SceneKit / Metal) и позволить ему разобраться в этом здесь не сработает, потому что: 1. Я выполняю некоторую часть рендеринга, собирая 2D-изображения. в 3D-текстуру, так что это то, что мне нужно делать с необработанными данными, а не то, что я могу просто прочитать из стандартного формата файла изображения; 2. Я специально пытаюсь передать изображения гамма-1.0 в систему рендеринга, чтобы избежать накладных расходов на sRGB → линейное преобразование (рендеринг выполняется в линейном пространстве).
Также: решения для ручного анализа ICC, решения с использованием Apple API и предложения библиотек с открытым исходным кодом - все это приемлемые ответы. Это не конкретный запрос на рекомендацию инструмента - любое решение, которое будет работать, является хорошим, но, по моим исследованиям, ручной анализ ICC был бы громоздким, а API Apple, похоже, не раскрывают какие-либо свойства ICC. Поэтому я считаю, что наиболее вероятным ответом будет указатель на какую-то библиотеку, которую я не смог найти через Google, GitHub, CocoaPods или StockOverflow, и будет с радостью принят.