我使用NSKeyedArchiver将UIImages序列化到磁盘。
UIImage符合NSCoding,因此可以正确序列化和反序列化,但生成的文件非常大,从而导致性能问题。
我通过将标准iPhone5相机拍摄的ALAssetsLibrary中的图像加载到UIImage,然后将图像序列化到磁盘来测试这个
UIImage *testImage = [asset defaultRepresentation]....
[NSKeyedArchiver archive:testImage ....]
文件大约为15MB,写入/加载时间超过1秒。
然后我尝试通过转换为NSData序列化UIImage:
NSData *imageData = UIImageJPEGRepresentation(UIImage *image, 0....1); // tried most compression all the way to least compression
[NSKeyedArchiver archive:imageData....]
生成的文件幅度更小(读取和写入速度更快)
保存图像的建议方法是什么?来自ALAssetsLibrary的底层图像是否在磁盘上占用15MB来存储图像?
我应该使用PNG表示吗?