iPhone,如何从照片库中读取图像作为NSData?

时间:2011-07-13 23:06:58

标签: iphone xcode uiimage uiimagepickercontroller nsdata

在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图像,没有任何修改。

2 个答案:

答案 0 :(得分:3)

您应该查看ALAssetRepresentation的getBytes方法。 这样可以为您提供图像的原始RAW图像数据,还可以使用缓冲区处理图像,而不是一次性将图像读入内存。 当然,您始终可以从getBytes方法生成NSData。

干杯,

亨德里克

答案 1 :(得分:1)

如果您已经拥有ALAsset,则应该能够使用以下内容获得NSData默认表示:

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