length属性返回图像的错误大小(字节)

时间:2013-07-15 07:19:25

标签: ios uiimage

我的资源文件夹中有一个.png文件。(实际大小为411 KB) 当我将uiimage转换为nsdata并尝试访问length属性时,它给了我错误的值。

...代码

UIImage *image = [UIImage imageNamed:@"sample.png"];

NSData *imgData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(image, 1.0)];
int imageSize   = imgData.length;
NSLog(@"Image size in KB is %d",imageSize/1024); //-------- returns 631 KB

如果有任何其他财产有帮助,请告诉我。


所以这是我的要求.... 我想知道从uimagepicker中选择的图像的大小。当我在取景器中看到它时图像的确切尺寸以及从库中拾取后返回给我的尺寸完全不同......是否还有其他属性可以用来代替长度?

3 个答案:

答案 0 :(得分:4)

您正在将png转换为jpeg,因此应该预期不同的文件大小。

如果您想获得原始png图像的文件大小,请执行以下操作。

NSString *path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"png"];
NSData *rawData = [NSData dataWithContentsOfFile:path];
NSLog(@"%d", rawData.length);

答案 1 :(得分:1)

试试这个:

unsigned int len = [data length];
uint32_t little = (uint32_t)NSSwapHostIntToLittle(len);
NSData *byteData = [NSData dataWithBytes:&little length:4];

答案 2 :(得分:0)

加载图像后,将其解压缩。当您创建“imgData”时,图像没有使用相同的算法进行重新压缩。没有理由期望两者具有相同的大小。