Задать вопрос
AndreyIvanoff
@AndreyIvanoff

Программирование на iPhone. Быстрый аналог CGDataProviderCopyData?

Здравствуйте хабровчане.
Проблема:

Откуда — то приходит изображение 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 млс. Это терпимо еще.
  • Вопрос задан
  • 2832 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Limosha
UIImagePNGRepresentation
Почитайте документацию внимательно. Но не гарантирую что не копирует.
Ответ написан
AndreyIvanoff
@AndreyIvanoff Автор вопроса
Проблема была решена. Информация по: ссылке.
Используется приватная функция UIGetScreenImage. Выдает картинку разрешения 320 на 480.
Операция (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) для такой картинки выполняется у меня на устройстве 50 млс. Это терпимо еще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы