Изменить ориентацию видео или изображения на портрет с помощью AVCam

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

Для заметки, мое приложение поддерживает только портрет, а захватывать следует только в портретном.

Обновить:

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

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

1 ответ

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

writeImageToSavedPhotosAlbum:orientation:completionBlock:

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

Использование: https://developer.apple.com/library/ios/documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/index.html:

Пример с целью 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);
                                                             }
                                                         }];
Другие вопросы по тегам