Здравствуйте хабровчане.
Проблема:
Откуда — то приходит изображение UIImage* im. Например с камеры iPhon'a.
Нужно взять значения пикселей с этой картикни. Однако есть условие — этот процесс должен происходить
быстро.
Сейчас используется:
CGImageRef imageRef = im.CGImage;<br/>
NSData *nsData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(imageRef));<br/>
unsigned char const * pixels = (unsigned char*)[nsData bytes];
Однако
CGDataProviderCopyData видимо копирует данные, а это, для совсем не маленькой картинки 2048 на 1536 (что пришло с камеры — то пришло), занимает на телефоне целых 500 млс. Что недопустимо долго.
Операция копирования не нужна, я не планирую что-то менять в картинке, да это бы и не вышло.
По этому вопросу нашел
ссылку, там обсуждение осталось без ответа.
Вопрос — как быстро взять raw данные из картинки?
Возможен еще другой подход — можно с камеры получать изображение меньшего размера, ну вот зачем мне приходит картинка размера 2048 на 1536? Возможно есть настройка, которая позволит как то повлиять на разрешение?
UPD 11.04.11, 16:40: — В комментарии ниже ошибся.
Не 50 а 7 млс.
Проблема была решена. Информация по: ссылке.
Используется приватная функция UIGetScreenImage. Выдает картинку разрешения 320 на 480.
Операция (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) для такой картинки выполняется у меня на устройстве
7 млс. Это терпимо еще.