2014-11-25 1 views
0

Я использую Apple AVCam source code для создания пользовательской камеры, ее работа как шарм, проблема заключается в том, что однажды я захватил видео или изображение с ним, а затем проверил его на фотографии библиотека его ориентация меняется на пейзаж (даже я снимал ее в портретной ориентации). Я много искал для этого, но не смог найти способ для этого. Любая помощь?Изменить ориентацию видео или изображения на портрет с помощью AVCam

Для заметки мое приложение поддерживает только портрет и захват изображения только в портретной ориентации.

Update:

AVCaptureConnection *captureConnection = ... 
if ([captureConnection isVideoOrientationSupported]) 
{ 
    AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationPortrait; 
    [captureConnection setVideoOrientation:orientation]; 
} 

Это не работает.

ответ

0

Для захвата изображения вы также должны установить ориентацию. Когда вы сохраняете изображение на диск, вы должны использовать функцию

writeImageToSavedPhotosAlbum:orientation:completionBlock: 

и установить правильный параметр «ориентация».

Использование: https://developer.apple.com/library/ios/documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/index.html#//apple_ref/occ/instm/ALAssetsLibrary/writeImageToSavedPhotosAlbum:orientation:completionBlock:

Пример на Objective C:

// Flash set to Auto for Still Capture 
    [CameraViewController setFlashMode:AVCaptureFlashModeAuto 
          forDevice:[[self videoDeviceInput] device]]; 

    // Capture a still image. 
    [[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:[[self stillImageOutput] connectionWithMediaType:AVMediaTypeVideo] 
                 completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) { 

     if (imageDataSampleBuffer) { 
      self.imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer]; 

      [[[ALAssetsLibrary alloc] init] writeImageToSavedPhotosAlbum:image.CGImage 
                  orientation:(ALAssetOrientation)[image imageOrientation] 
                 completionBlock:^(NSURL *assetURL, NSError *error) { 
                  if(error == nil) { 
                   NSLog(@"PHOTO SAVED - assetURL: %@", assetURL); 
                  } else { 
                   NSLog(@"ERROR : %@",error); 
                  } 
                 }];