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]];