如何使用800万像素摄像头在iPhone设备中捕获500万像素?

时间:2014-01-31 06:48:25

标签: ios iphone camera avfoundation avcapturesession

我想在iOS设备中以5 MP分辨率捕获图像,其中最大图像传感器捕获分辨率为8 MP。

Avfoundations中提供的预设 AVCaptureSessionPresetPhoto给出 - 3264x2448 - 8 MP分辨率 VCaptureSessionPresetHigh给出 - 1920x1080 - 2 MP分辨率

有没有办法/解决方法直接捕获5MP,而不是捕获8MP然后缩小尺寸?

3 个答案:

答案 0 :(得分:2)

iOS提供的相机输出分辨率非常有限。

您正确地提到最大尺寸是8MP,下一个预设下降到1080p或~2MP。看起来似乎是按照应用程序需要缩小/裁剪图像,但是SDK不提供单个API来获得所需的分辨率或输出图像。

希望这有帮助。

答案 1 :(得分:2)

AVCaptureSessionPreset仅提供常量分辨率(您可以看到API引用)。如果您想以自定义分辨率保存图片,可以在此处找到Save image with custom resolution

答案 2 :(得分:1)

为什么不使用800万像素摄像头拍摄图像,然后在保存图像之前使用以下方法更改其尺寸w.r.t 5MP分辨率

+ (UIImage*)imageWithImage:(UIImage*)image
          scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}

在保存捕获的图像之前,在imagePickerDidFinishMediaWithInfoMethod中调用上述方法。上面的方法将返回一个更改大小的Uiimage(您必须提供为CGSize)。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage * tempImage =[info objectForKey:UIImagePickerControllerOriginalImage];
  CGSize mSize;
   mSize     =  CGSizeMake(your width and height as per 5MP mode);
   tempImage = [ViewController  imageWithImage:tempImage scaledToSize:mSize];
  // use this temp img as it would be in dimensions of 5MP image.
}