【发布时间】:2011-07-01 09:57:32
【问题描述】:
我正在使用 UIImagePickerController 获取 UIImage。如何计算该图像以 kb/mb 为单位保存的字节数?
使用该值,我必须制定用户无法添加超过 1MB 大小的图像的逻辑
【问题讨论】:
标签: iphone uiimageview byte uiimagepickercontroller nsdata
我正在使用 UIImagePickerController 获取 UIImage。如何计算该图像以 kb/mb 为单位保存的字节数?
使用该值,我必须制定用户无法添加超过 1MB 大小的图像的逻辑
【问题讨论】:
标签: iphone uiimageview byte uiimagepickercontroller nsdata
当然可以。将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
【讨论】:
UIImagePNGRepresentation(img)
您可以通过以下 UIImagePickerController 的委托方法获取图像大小
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
if([UIImageJPEGRepresentation(image, 1.0) length]> MAX_SIZE)
{
//Code here
}
}
这里,你可以看到,我已经把Image转换成数据了,[数据长度]可以给出字节长度。
【讨论】:
与其阻止用户上传超过 1MB 的图像,不如通过缩放和压缩图像来更好地为用户服务,以节省我怀疑的空间。但是,要回答您的问题,一种方法就是;
-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *) info {
NSData *imageData = UIImagePNGRepresentation(image); // Or UIImageJPEGRepresentation
long sizeInBytes = [imageData length];
// do stuff
}
【讨论】: