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



在iPhone上,我使用资产库将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表单中添加的内容。

编辑3:

是否有办法做到这一点,现在在iOS 10与phphotollibrary取代AssetLibrary?我需要NSData中的图像是原始的RAW图像,没有修改

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

欢呼,亨德里克•

如果您已经有了ALAsset,您应该能够使用以下命令获得默认表示的NSData:

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

最新更新