在iPhone上,我使用assest库将图像保存(通过图像代码后附加数据),将图像保存到照片库,直接将NSData保存到照片库。现在我想从照片库中读回图像作为NSData来读取它。如果我将其作为UIImage读取,它会更改图像中的数据。
如何将照片库中的照片作为NSData阅读?我尝试在4.1中查看参考URL,但没有运气。
编辑:我编辑解释为什么我将其保存为NSData。如果您只想要纯NSData,则答案中的URL方法有效,但在我要求的上下文中没有帮助。
编辑2:getBytes的答案是为我做的答案。我使用的代码是:
int8_t *bytes = malloc([representation size]);
NSUInteger length = [representation getBytes:bytes fromOffset:0 length:[representation size] error:&error];
这能够让我得到文件里面的所有内容,它给了我在NSData表单中添加的图像代码PLUS。
编辑3:
现在有没有办法在iOS 10中使用PHPhotoLibrary取代AssetLibrary?我需要NSData中的图像是原始的RAW图像,没有任何修改。
答案 0 :(得分:3)
您应该查看ALAssetRepresentation的getBytes方法。 这样可以为您提供图像的原始RAW图像数据,还可以使用缓冲区处理图像,而不是一次性将图像读入内存。 当然,您始终可以从getBytes方法生成NSData。
干杯,
亨德里克
答案 1 :(得分:1)
如果您已经拥有ALAsset
,则应该能够使用以下内容获得NSData
默认表示:
NSData *data = [NSData dataWithContentsOfURL:[[asset defaultRepresentation] url]];