将UIImage转换为字节

3

我正在使用UIImagePickerController获取UIImage。如何计算该图像所占用的字节数(以KB / MB为单位)?

根据这些值,我必须制定逻辑,以便用户无法添加大小超过1MB的图像。

3个回答

4
当然可以。将UIImage转换为一个NSData对象,该对象具有length属性,可让您得知其以字节为单位的大小。然后,您可以轻松地按所需单位计算大小。
例如:
    UIImage *img = [UIImage imageNamed:@"some.png"];
    NSData *dataObj = UIImageJPEGRepresentation(img, 1.0);
    int bytes = [dataObj length];
    //convert into whatever unit you need

1
你也可以使用 UIImagePNGRepresentation(img) - akashivskyy
当然 - 我不知道他喜欢哪一个,但那是个好点子。+1 - Pripyat
@AvtarGuleria - 当您这样做时,您正在对图像进行编码和解码,结果数据可能会增长到原始文件的两倍! 如果您使用ALAssetsLibrary类,您可以获取原始NSData,其大小将符合您的预期。 - Aaron Brager

1

你可以通过UIImagePickerController的以下委托方法获取图像大小

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
     if([UIImageJPEGRepresentation(image, 1.0) length]> MAX_SIZE)
     {
         //Code here
     }
}

在这里,您可以看到我已将图像转换为数据,[data length] 可以给出字节长度。

0
与其阻止用户上传超过1MB的图像,您最好通过缩放和压缩图像来节省空间,以更好地为用户服务。然而,回答您的问题,一种简单的方法是:
-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *) info {


NSData *imageData = UIImagePNGRepresentation(image); // Or UIImageJPEGRepresentation 
long sizeInBytes = [imageData length];

// do stuff

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接