iPhone:如何更改相机照片质量

时间:2010-08-27 06:38:02

标签: iphone camera uiimagepickercontroller

我在任何地方都找不到这个问题的答案,但这似乎是一个典型的问题: 我正在从iPhone 4拍照,我必须通过POST-Request将这些照片发送到服务器,但服务器不接受大于0.5 MB的图片,所以我必须在我之前压缩图片发送他们。为了实现这一点,我调用了以下方法:“NSData * imageData = UIImageJPEGRepresentation(tempImage,0.7);”,这意味着:我正在编译图像数据,并且需要花费很多时间(大约10s / pic)。

有没有办法控制相机设备的质量以拍摄低质量的照片?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

任何阻止主线程的东西都应该在后台线程中完成,包括将图像转换为JPEG。因此,您应该使用performSelectorInBackground:withObject:启动JPEG转换,并在转换完成后,将生成的NSData对象传递回主线程。

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissModalViewControllerAnimated:YES];
    [self performSelectorInBackground:@selector(encodePhotoInBackground:) withObject:image];
}

- (void)encodePhotoInBackground:(UIImage*)image {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSData *imageData = UIImageJPEGRepresentation(image, 0.60);

    [self performSelectorOnMainThread:@selector(saveImageData:) withObject:imageData waitUntilDone:NO];

    [pool release];
}

- (void)saveImageData:(NSData*)imageData {
    // Do something with the image
}