我想在iOS设备中以5 MP分辨率捕获图像,其中最大图像传感器捕获分辨率为8 MP。
Avfoundations中提供的预设 AVCaptureSessionPresetPhoto给出 - 3264x2448 - 8 MP分辨率 VCaptureSessionPresetHigh给出 - 1920x1080 - 2 MP分辨率
有没有办法/解决方法直接捕获5MP,而不是捕获8MP然后缩小尺寸?
答案 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.
}