iOS获得UIImage内存大小

use*_*228 5 objective-c uiimage ios

我想获得UIImage Object真正的内存大小.有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);
Run Code Online (Sandbox Code Playgroud)

和结果

S1:62734

S2:175939

S3:578816

哪一个是对的?

bob*_*ble 5

最后一个(第3个)是正确的:

  • s1是保存到文件时.png图像的大小
  • s2是保存到质量最好的文件时.jpg图像的大小

  • 您可以交易jpg文件大小以获得图像质量.`UIImageJPEGRepresentation``compressQuality`参数确定压缩量,范围从0到1.在代码示例中,jpg表示的质量设置为1或最高质量,这将产生最大的jpg文件.PNG是一种无损压缩,根据图像,可能会产生比"高质量"jpg文件更小的文件大小. (3认同)
  • @onmyway133 内存中的大小基于照片的大小(宽度和高度)和深度(每像素字节数)。内存中的照片不会像磁盘上的 jpeg 或 png 照片那样被压缩。 (2认同)