Почему -writeImageToSavedPhotosAlbum неправильно ориентирует мое изображение?

Я использую -writeImageToSavedPhotosAlbum для отправки изображений в библиотеку фотографий. Проблема, с которой я столкнулся, заключается в том, что, несмотря на указание ориентации, изображения в конечном итоге имеют неправильную ориентацию.

На самом деле кажется, что ориентированные AVCaptureVideoOrientationPortrait в конечном итоге выглядят как AVCaptureVideoOrientationPortraitUpsideDown , и AVCaptureVideoOrientationLandscapeLeft в конечном итоге выглядят как AVCaptureVideoOrientationLandscapeRight и наоборот.

Есть ли причина, по которой это происходит? Вот еще некоторые подробности:

У меня нет ViewController, выполняющего автоматическое изменение ориентации моего представления.
На всех изображениях [image imageOrientation] равно AVCaptureVideoOrientationPortrait , но я отслеживаю фактическую ориентацию и передаю ее в -writeImageToSavedPhotosAlbum независимо.

Я использую: -writeImageToSavedPhotosAlbum: Ориентация: ЗавершениеБлок:

Я был бы признателен, если бы кто-нибудь мог пролить свет на это.

ОБНОВЛЕНИЕ:

Несмотря на то, что я читал в документации,

Если вы хотите сохранить объект UIImage, вы можете использовать метод UIImage CGImage, чтобы получить CGImageRef, и приведите imageOrientation изображения к ALAssetOrientation.

Я пошел дальше и изменил ориентацию, в которой прохожу:

switch (lastOrientation) {
    case UIDeviceOrientationPortrait:
    default:
        alOrientation = ALAssetOrientationUp;
        break;
    case UIDeviceOrientationPortraitUpsideDown:
        alOrientation = ALAssetOrientationDown;
        break;
    case UIDeviceOrientationLandscapeLeft:
        alOrientation = ALAssetOrientationLeft;
        break;
    case UIDeviceOrientationLandscapeRight:
        alOrientation = ALAssetOrientationRight;
        break;

}
[library writeImageToSavedPhotosAlbum:[image CGImage]
                          orientation:(ALAssetOrientation) alOrientation// [image imageOrientation]
                      completionBlock:^(NSURL *assetURL, NSError *error) {
                            NSLog(@"completion block");
                      }];

Теперь все изображения ориентируются левым краем вниз, как если бы они были альбомными-правыми. У меня до сих пор нет правильного, но, по крайней мере, они у меня единообразно ориентированы.

Еще одно ОБНОВЛЕНИЕ:

Это работает. Почему, я не знаю:

switch (lockedOrientation) {
        case UIDeviceOrientationPortrait:
        default:
            alOrientation = ALAssetOrientationRight; //3 instead ofALAssetOrientationUp;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            alOrientation = ALAssetOrientationLeft; //2 insted of ALAssetOrientationDown;
            break;
        case UIDeviceOrientationLandscapeLeft:
            alOrientation = ALAssetOrientationUp; //0 instead of ALAssetOrientationLeft;
            break;
        case UIDeviceOrientationLandscapeRight:
            alOrientation = ALAssetOrientationDown; //1 instead of ALAssetOrientationRight;
            break;

    }
    [library writeImageToSavedPhotosAlbum:[image CGImage]
                              orientation:(ALAssetOrientation) alOrientation// [image imageOrientation]
                          completionBlock:^(NSURL *assetURL, NSError *error) {
                                NSLog(@"completion block");
                          }];
9
задан mahboudz 2 November 2011 в 06:56
поделиться