iOS获取UIImage内存大小
Posted
技术标签:
【中文标题】iOS获取UIImage内存大小【英文标题】:iOS get UIImage memory size 【发布时间】:2014-08-25 10:32:36 【问题描述】:我想获取 UIImage 对象的实际内存大小。 有3种方法
NSUInteger s1 = UIImagePNGRepresentation(thumbImage).length;
NSUInteger s2 = UIImageJPEGRepresentation(thumbImage, 1).length;
NSUInteger s3 = CGImageGetHeight(thumbImage.CGImage) * CGImageGetBytesPerRow(thumbImage.CGImage);
NSLog(@"s1:%u",s1);
NSLog(@"s2:%u",s2);
NSLog(@"s3:%u",s3);
结果
s1:62734
s2:175939
s3:578816
哪个是对的?
【问题讨论】:
***.com/questions/6402614/… 【参考方案1】:最后一个(s3)是正确的:
s1 是 .png 图像保存到文件时的大小 s2 是 .jpg 图像保存到最佳质量文件时的大小【讨论】:
但是为什么保存到文件时jpg尺寸比png尺寸大,正常情况下应该是相反的。 您可以用 jpg 文件大小换取图像质量。UIImageJPEGRepresentation
compressionQuality
参数确定压缩量,范围从 0 到 1。在代码示例中,jpg 表示的质量设置为 1,或最高质量,这将产生最大的 jpg 文件。 PNG 是一种无损压缩,根据图像的不同,生成的文件大小可能比“高质量”的 jpg 文件更小。
@bobnoble 为什么内存和磁盘大小不同?
@onmyway133 内存大小取决于照片的大小(宽度和高度)和深度(每像素字节数)。内存中的照片不会被压缩,因为 jpeg 或 png 照片在磁盘上。以上是关于iOS获取UIImage内存大小的主要内容,如果未能解决你的问题,请参考以下文章
加载 UIImage 时 iOS 应用程序崩溃(虚拟内存未清理)