如何获得图像的实际尺寸?
我正在使用
NSInteger actualSize = CGImageGetHeight(image.CGImage) * CGImageGetBytesPerRow(image.CGImage);
或
NSData *imageData2 = UIImageJPEGRepresentation(image, 1.0);
[imageData2 length];
但是我没有得到图像的实际尺寸,它与磁盘上的尺寸相比要小得多(因为我使用的是模拟器)。
有没有办法获得图像的实际尺寸?
答案 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
对象推断出原始文件大小。你必须查看原始资产。