iPhone, как можно прочитать изображение из библиотеки фотографий как NSData? - PullRequest
8 голосов
/ 14 июля 2011

На iPhone я сохранил изображение в библиотеке фотографий с изменениями (добавление данных после кода изображения), используя библиотеку сборки, чтобы сохранить NSData непосредственно в библиотеке фотографий.Теперь я хочу прочитать изображение обратно из библиотеки фотографий как NSData, чтобы прочитать его.Если я читаю его как UIImage, он изменяет данные внутри изображения.

Как я могу прочитать фотографию из библиотеки фотографий как NSData?Я попытался просмотреть ссылочный URL в 4.1, но безуспешно.

Редактировать: я редактировал, чтобы объяснить, почему я сохраняю его как NSData.Метод URL в ответах работает, если вы просто хотите получить чистые NSData, но не помогает в контексте, о котором я спрашиваю.

Редактировать 2: Ответ с getBytes был ответом, который сделал это для меня.Код, который я использовал, был:

int8_t *bytes = malloc([representation size]);
NSUInteger length = [representation getBytes:bytes fromOffset:0 length:[representation size] error:&error];

Это позволило мне получить все внутри файла, который дал мне код изображения ПЛЮС, который я добавил в форме NSData.

Редактировать 3:

Есть ли способ сделать это сейчас в iOS 10 с помощью PHPhotoLibrary, которая заменяет AssetLibrary?Мне нужно, чтобы изображение в NSData было исходным RAW-изображением без изменений.

Ответы [ 2 ]

3 голосов
/ 16 июля 2011

Вы должны посмотреть на метод getBytes ALAssetRepresentation. Это дает вам исходные данные изображения RAW вашего изображения, а также позволяет использовать буфер для обработки изображения вместо того, чтобы считывать изображение в память все сразу. И, конечно, вы всегда можете сгенерировать NSData из метода getBytes.

Приветствия

Хендрик

1 голос
/ 14 июля 2011

Если у вас уже есть ALAsset, вы сможете получить NSData представления по умолчанию, используя следующее:

NSData *data = [NSData dataWithContentsOfURL:[[asset defaultRepresentation] url]];
...