Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 以字节为单位的数据大小不准确_Iphone_Ios_Objective C_Uiimage_Nsdata - Fatal编程技术网

Iphone 以字节为单位的数据大小不准确

Iphone 以字节为单位的数据大小不准确,iphone,ios,objective-c,uiimage,nsdata,Iphone,Ios,Objective C,Uiimage,Nsdata,我拍摄了一张13.3MB的图像,并将其添加到XCode中。我知道在编译时,XCode会执行一些技巧来减小文件大小。我这样做是为了测试图像在转换成数据后现在有多大: UIImage *image = [UIImage imageNamed:@"image.jpg"]; NSData *data = UIImageJPEGRepresentation(image, 1.0); NSLog(@"length: %i", data.length); 我得到的长度是26758066。如果以字节为单位,那

我拍摄了一张13.3MB的图像,并将其添加到XCode中。我知道在编译时,XCode会执行一些技巧来减小文件大小。我这样做是为了测试图像在转换成数据后现在有多大:

UIImage *image = [UIImage imageNamed:@"image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"length: %i", data.length);
我得到的长度是
26758066
。如果以字节为单位,那么对我来说是26.7MB。图像怎么突然变得这么大?有没有其他方法可以让我在不首先通过UIImage的情况下以数据形式获取图像

编辑:进一步的测试表明,这是可行的,并产生了约13.3MB的数据长度-预期数量:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSLog(@"length: %i", data.length);

您的代码所做的是将图像解压缩到内存中,然后以最高质量比(
q=1.0
)重新压缩为JPEG。这就是图像突然变得如此巨大的原因


如果要检查存储在资源包中的文件,请询问
NSBundle
完整的文件路径,并使用
NSFileManager
读取文件大小。您可以在Mac上手动执行相同的操作,只需查看项目的
BUILD\u PRODUCTS\u DIR

是否有特定原因需要图像的
NSData
?如果您已经回答了问题,请回答并将其标记为正确。@NathanWhite 1。我需要NSData,以便在测试应用程序中测试一些内存使用情况。2.第一个问题仍然存在——为什么UIImageJPEG表示返回的图像大小是第一个图像的2倍?