Ios AVCaptureSessionPreset:为什么标准iPhone摄像头可以节省2448×;3264,如果最大预设值为1088x120?
我正在编写使用摄像头的iOS小应用程序。我使用Ios AVCaptureSessionPreset:为什么标准iPhone摄像头可以节省2448×;3264,如果最大预设值为1088x120?,ios,camera,photo,avcapturesession,high-resolution,Ios,Camera,Photo,Avcapturesession,High Resolution,我正在编写使用摄像头的iOS小应用程序。我使用 AvFase AVCAPtoStudiSeStudio< < /C> >。在我的具体设备上,它们是: captureQualityTo=(640852) CaptureQualityHigh=(1088120) CaptureQualityMedium=(368480) CaptureQuality1280x720=(720 1280) CaptureQuality640x480=(480 640) CaptureQualityiFrame960x
captureQualityTo=(640852)
CaptureQualityHigh=(1088120)
CaptureQualityMedium=(368480)
CaptureQuality1280x720=(720 1280)
CaptureQuality640x480=(480 640)
CaptureQualityiFrame960x540=(540 960)
标准照相机应用程序以分辨率保存照片
2448×3264
假设我想以相同的分辨率保存照片,但我能达到的最高质量是
1088 x 1920
当然,我可以调整UIImage的大小,但这是最好的方法吗
标准应用程序是否可以访问更高的分辨率,或者只是使用一些缩放和插值 编辑: 现在,我的2248x3264照片预设工作代码如下所示:
-(void) initCapturingDevice
{
[self releaseCapturingDevice];
self.capture_session = [[AVCaptureSession alloc] init];
[self.capture_session beginConfiguration];
self.video_data_output = [[AVCaptureVideoDataOutput alloc] init];
self.video_data_output.videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey];
[self.video_data_output setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
[self.capture_session addOutput:self.video_data_output];
self.capture_session.sessionPreset = AVCaptureSessionPresetPhoto;
// some code here ...
}
使用
AVCaptureSessionPresetPhoto
和AVCaptureStillImageOutput
,您可以获得最高质量的照片(在我的手机上为4032 x 3024):
let captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
let input = try! AVCaptureDeviceInput(device: captureDevice)
captureSession.addInput(input)
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
let stillImageOutput = AVCaptureStillImageOutput()
captureSession.addOutput(stillImageOutput)
captureSession.startRunning()
let connection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo)
stillImageOutput.captureStillImageAsynchronouslyFromConnection(connection) { (sampleBuffer, error) in
print("maximum quality photo: \(sampleBuffer)\n")
}