2013-06-03 170 views
2

我想上传一个图像高达8 MB。因此为了测试,我在4.2 mb(尺寸:3264 X 2443)的照片库中添加了图像。但是当我选择上传图片时,我已经检查过图片的大小。但它返回了9840076个字节,即实际为4.2MB的9.3842MB。因此4.2 MB大小的图像无法上传。iOS返回不同大小的图像?

我用下面的方法来计算图像的大小,这是返回9840076字节。

[UIImageJPEGRepresentation(imageRerurnedFromPhotoGallery , 1.0) length]; 

我做得不对计算图像的大小? 请给我正确的方法。 在此先感谢!

+1

我不明白这一点:“它返回9840076字节,即9.3842 mb,实际为4.2 mb”。 – bdesham

+0

他说图像的大小是4.2 MB,但通过该代码,他得到9.3 MB这是错误的 –

回答

0

你为什么不试试这样?

你会以字节为单位

NSData *data = [[NSData alloc] initWithData:UIImageJPEGRepresentation((Your Image), 0.5)]; 

int imageSize = data.length; 
NSLog(@"size of image is: %i ", imageSize); 
+0

'UIImageJPEGRepresentation(..)'将返回'NSData'实例,返回长度以字节为单位。 OP在问题中已经提到这一点。在上面的代码中,你实际上在内存中复制了4.2MB的图像数据,这是不必要的。只有改变你有'JPEG质量= 0.5'这将削减图像像素。 – Amar

+0

是的,你是对的 –

0

您解码得到的大小,然后再对图像进行编码,这就是为什么文件的大小可能会有所不同。如果根本不需要修改图像,请使用ALAssetsLibrary将图像作为NSData对象而不是UIImage对象。然后,当您查看NSDatalength属性时,您的文件大小将完全匹配。有关示例代码,请参阅Using ALAssetsLibrary and ALAsset take out Image as NSData

相关问题