2015-12-24 4 views
1

Я пишу небольшое приложение для iOS, которое использует камеру. Я использую AVFoundation Framework API и учитываю максимальное качество AVCaptureSessionPreset. На моем конкретном устройстве те:
CaptureQualityPhoto = (640 852)
CaptureQualityHigh = (1088 1920)
CaptureQualityMedium = (368 480)
CaptureQuality1280x720 = (720 1280)
CaptureQuality640x480 = (480 640)
CaptureQualityiFrame960x540 = (540 960)
AVCaptureSessionPreset: почему стандартная камера для iPhone сохраняет 2448 × 3264, если максимальный пресет равен 1088x1920?

Стандартное приложение Камера сохраняет фотографии с разрешением 2448 × 3264.
Скажите, что я хочу сохранить фотографии с тем же разрешением, но максимальное качество, которое я могу достичь, - 1088 x 1920.
Конечно, я могу изменить размер UIImage, но это лучший подход?
Имеет ли стандартный доступ к приложениям более высокое разрешение или просто использует некоторое масштабирование и интерполяцию?

Edit: Теперь мой рабочий код с 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 ... 
} 

ответ

1

Вы можете получить максимальное качество фото (4032 х 3024 на мой телефон) с AVCaptureSessionPresetPhoto и AVCaptureStillImageOutput:

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") 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^