UIImage является оберткой, байты которой CGImage или CIImage
Согласно справочнику Apple по на UIImage объект является неизменным, и у вас нет доступа к резервным байтам. Хотя верно то, что вы можете получить доступ к данным CGImage, если вы заполнили UIImage
CGImage
(явно или неявно), он вернет NULL
, если UIImage
поддерживается CIImage
и наоборот. наоборот.
Объекты изображения не обеспечивают прямой доступ к своему базовому изображению
данные. Тем не менее, вы можете получить данные изображения в других форматах для
использовать в вашем приложении. В частности, вы можете использовать cgImage и ciImage
свойства для получения версий изображения, которые совместимы с
Core Graphics и Core Image соответственно. Вы также можете использовать
UIImagePNGRepresentation ( :) и UIImageJPEGRepresentation (: _ :)
функции для создания объекта NSData, содержащего данные изображения в
в формате PNG или JPEG.
Общие хитрости, чтобы обойти эту проблему
Как указано, ваши варианты
- UIImagePNGRпредставление или JPEG
- Определите, содержит ли изображение вспомогательные данные CGImage или CIImage, и получите их там
Ни один из этих приемов не является особенно хорошим, если вы хотите выводить данные, которые не являются данными ARGB, PNG или JPEG, а данные еще не поддерживаются CIImage.
Моя рекомендация, попробуйте CIImage
При разработке вашего проекта для вас может иметь больше смысла вообще избегать UIImage и выбирать что-то другое. UIImage, как оболочка изображения Obj-C, часто поддерживается CGImage до такой степени, что мы принимаем это как должное. CIImage имеет тенденцию быть лучшим форматом-оберткой, поскольку вы можете использовать CIContext , чтобы получить нужный формат без необходимости знать, как он был создан. В вашем случае получение растрового изображения было бы вопросом вызова
- рендер: toBitmap: rowBytes: границы: формат: colorSpace:
В качестве дополнительного бонуса вы можете начать делать приятные манипуляции с изображением, цепляя фильтры на изображение. Это решает многие проблемы, когда изображение переворачивается вверх ногами или его нужно повернуть / масштабировать и т. Д.