【发布时间】:2011-11-24 01:43:24
【问题描述】:
我想知道UIImageView 对象的内存大小,因为我需要显示一些大图像并且我需要处理内存。我想这是由图像属性决定的。但是我不确定如何计算精算内存大小,下面是我编写的测试代码:
//1.jpg has a size of 4016X2657 and 2.1MB
NSData *imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"]];
NSLog(@"imageData:%d",[imageData length]);
控制台显示:
imageData:2070461
这正好是 2.1MB 的大小。
但是,在我看来,UIImageView 应该知道显示图像的每个像素,换句话说,它应该具有以下内存:
4016*2657*4/1024/1024 = 40.7+MB
这么大,不知道iOS会不会做一些优化,文档里也找不到相关的。
谁能帮我UIImageView 对象的确切内存大小是多少?
【问题讨论】:
-
@Till,一个uiimageview对象的内存大小。
-
你实际上是在你的问题中计算出来的——它大约是宽 x 高 x 4
-
那是照片的原始数据。但是我不确定iOS是否会在UIImage中做一些优化。你知道吗?
-
它不会优化内存使用(使用压缩),因为这会降低图像质量和/或显示性能。 PowerVR(GL/显示单元)确实支持图像压缩,但只是有损压缩,在大多数情况下看起来很糟糕。
-
关于您的标记:如果您对自己的问题有自我回答,请将其发布在下方,然后在时间允许时将其标记为已接受。
标签: ios uiimageview memory-management