iPhone, как можно прочитать изображение из библиотеки фотографий как NSData?

На 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 ответа

Решение

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

Ура,

Хендрик

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

NSData *data = [NSData dataWithContentsOfURL:[[asset defaultRepresentation] url]];
Другие вопросы по тегам