Sto utilizzando -writeImageToSavedPhotosAlbum
per inviare immagini alla Libreria foto. Il problema che sto avendo è che, nonostante specifichi un orientamento, le immagini finiscono con gli orientamenti sbagliati.Perché -writeImageToSavedPhotosAlbum non orientare correttamente la mia immagine?
Infatti, sembra che quelli che sono orientate AVCaptureVideoOrientationPortrait
fine assomigliare AVCaptureVideoOrientationPortraitUpsideDown
, e AVCaptureVideoOrientationLandscapeLeft
fine assomigliare AVCaptureVideoOrientationLandscapeRight
e viceversa.
C'è qualche motivo per cui questo sta accadendo? Ecco alcuni dettagli:
Non ho ViewController che esegue il cambio di orientamento automatico per la mia vista.
Tutte le immagini mostrano [image imageOrientation]
uguale a AVCaptureVideoOrientationPortrait
, ma tengo traccia dell'orientamento effettivo e lo inoltro a -writeImageToSavedPhotosAlbum
in modo indipendente.
sto usando: -writeImageToSavedPhotosAlbum:orientation:completionBlock:
lo apprezzerei se qualcuno potesse fare luce su questo.
UPDATE:
Nonostante quello che ho letto nella documentazione,
Se si desidera salvare un oggetto UIImage, è possibile utilizzare il metodo UIImage CGImage per ottenere un CGImageRef, e lanciare l'immagine del imageOrientation a ALAssetOrientation.
sono andato avanti e ha cambiato l'orientamento passo in:
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");
}];
Ora, tutte le immagini orientarsi con il loro bordo sinistro verso il basso, come se fossero paesaggio-destra. Non ho ancora ragione, ma almeno li ho orientati in modo uniforme.
Un altro AGGIORNAMENTO:
Questo funziona. Perché, non lo so:
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");
}];
Che cosa è "lockedOrientation" nell'ultimo snippet di codice? – ebi