Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 将UIImage转换为字节_Iphone_Uiimageview_Byte_Uiimagepickercontroller_Nsdata - Fatal编程技术网

Iphone 将UIImage转换为字节

Iphone 将UIImage转换为字节,iphone,uiimageview,byte,uiimagepickercontroller,nsdata,Iphone,Uiimageview,Byte,Uiimagepickercontroller,Nsdata,我正在使用UIImagePickerController获取UIImage。我如何计算该图像所保留的字节数(kb/mb) 使用这些值,我必须确定用户不能添加超过1MB大小的图像的逻辑,当然可以。将UIImage转换为NSData对象,该对象具有length属性,该属性将以字节为单位显示其大小。然后,您可以轻松地计算出所需的任何单位的大小 例如: UIImage *img = [UIImage imageNamed:@"some.png"]; NSData *dataObj = U

我正在使用UIImagePickerController获取UIImage。我如何计算该图像所保留的字节数(kb/mb)


使用这些值,我必须确定用户不能添加超过1MB大小的图像的逻辑,当然可以。将
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

您可以从UIImagePickerController的以下委托方法获取图像大小

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

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

与其阻止用户上传超过1MB的图像,不如通过缩放和压缩图像来节省空间,更好地为用户服务。然而,要回答你的问题,一种方法就是

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *) info {


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

// do stuff

}

当然,您也可以使用
UIImagePNGRepresentation(img)
——我不知道他更喜欢哪一种,但这是一个很好的观点+1@AvtarGuleria-执行此操作时,您正在对图像进行编码和解码,生成的数据可能会增长到原始文件的两倍!如果您使用AlassetLibrary类,您可以获得原始NSData,这将是您期望的大小。@AaronBrager感谢您的建议,并将很快尝试此功能。