【发布时间】:2013-05-06 23:05:14
【问题描述】:
我有一个带有 UIImageView 的视图。它加载了 jpg 或 png 图像格式。说 jpg 图像版本的数据大小为 100k。然后我使用 NSKeyedArchiver 将我的视图保存到文件中。文件的大小约为 3MB。如果我使用 png 版本的图像,存档文件仍然在 3MB 左右。
然后我使用 zlib 来压缩归档文件。不过好像效果不大。
我能做些什么来让它尽可能地关闭 100k 区域?
顺便说一句:如果我使用 UIWebView 加载图像,那么使用 jpg 版本的图像我会得到非常接近原始 jpg 的存档文件。
编辑:马特的回答给了我一个想法,所以这就是我最终要做的:
注意:我已经使用了 UIImageView 的子类
- 创建一个 iVar 以保存图像的
NSData - 在
encodeWithCoder调用[super encodeWithCoder...]之前,设置self.image = nil;并使用1中保存的NSData将self.image设置回图像数据。 - 确保将
NSDataiVar 编码为1。
在initWithCoder中,使用NSData iVar 恢复镜像。
【问题讨论】:
-
之所以是 3MB,无疑是因为您保存的是未压缩。你的源文件是什么并不重要。
UIImage只能理解位图,这就是您要保存的内容。正如马特所说,您为什么需要这样做? -
在这种情况下我确实需要使用 NSKeyedArchiver。但请参阅我的编辑。
标签: ios uiimageview png jpeg nskeyedarchiver