我正在从Parse下载2400x1600的图片,但我不希望它一次将所有数据保存在内存中。来自Parse的PFFile对象具有一种方便的方法来将NSData用作NSInputStream,因此,当最终下载数据时,我最终得到了NSInputStream。
所以现在我想使用该NSInputStream来获取我的UIImage。它应该像使用文件方法的内容创建UIImage一样工作,即不是将整个图像立即加载到内存中。
我认为从NSInputStream写入文件,然后使用UIImage的file方法的内容在我的情况下应该可以正常工作,但是我没有找到从NSInputStream写入文件的方法。
任何代码示例或一些准则将不胜感激。
提前致谢。
最佳答案
为此,您可以设置NSOutputStream
,然后将接收到的数据流式传输到文件中。使用initToFileAtPath:append:
并使用YES创建输出流。在您的输入流回调中,通过调用write:maxLength:
(read more in the docs)将数据传递到输出流。流完成后,您便可以将完整映像保存在文件中,而不必完全存储在内存中。
由于您使用的是Parse,因此Henri的上述答案更合适,但这是一般的解决方案。