iphone sdk以字节为单位获取图像的实际大小

时间:2015-08-24 12:00:18

标签: ios uiimage image-size

如何获得图像的实际尺寸?

我正在使用

NSInteger actualSize  = CGImageGetHeight(image.CGImage) * CGImageGetBytesPerRow(image.CGImage);

NSData *imageData2 = UIImageJPEGRepresentation(image, 1.0);
[imageData2 length];

但是我没有得到图像的实际尺寸,它与磁盘上的尺寸相比要小得多(因为我使用的是模拟器)。

有没有办法获得图像的实际尺寸?

2 个答案:

答案 0 :(得分:0)

试试这个(适用于iOS 6.0或更高版本以及OS X 10.8):

NSLog(@"%@",[NSByteCountFormatter stringFromByteCount:imageData2.length countStyle:NSByteCountFormatterCountStyleFile]);

<强>更新

问题:您可以在初始化图像的位置发布代码吗?

以上解决方案对您不起作用。我们试试别的吧。您可以尝试直接检查图像文件大小:

    NSError* error;
NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:mediaURL error: &error];
NSNumber *size = [fileDictionary objectForKey:NSFileSize]; 

答案 1 :(得分:0)

这取决于你所说的“大小”。

  • 如果您希望在将图像加载到内存并由应用程序使用时使用的内存量,则每行的字节数高度是可行的方法。这将捕获应用程序主动使用图像时未压缩像素缓冲区使用的内存量。

  • 如果您想要在保存图像时使用持久存储中使用的字节数(通常享受一些压缩),请抓住原始资产的NSData并检查其length。但请注意,如果您加载图片然后使用质量为1的UIImageJPEGRepresentation,则通常会获得比原始压缩文件大得多的大小。

底线,标准JPEG和PNG文件享受一些压缩,但是当图像加载到内存中时,它是未压缩的。您通常无法从UIImage对象推断出原始文件大小。你必须查看原始资产。