Estoy usando -writeImageToSavedPhotosAlbum
para enviar imágenes a la Biblioteca de fotos. El problema que tengo es que a pesar de especificar una orientación, las imágenes terminan con las orientaciones incorrectas.¿Por qué -writeImageToSavedPhotosAlbum orienta mi imagen incorrectamente?
De hecho, parece que los que están orientados AVCaptureVideoOrientationPortrait
terminar pareciéndose a AVCaptureVideoOrientationPortraitUpsideDown
, y AVCaptureVideoOrientationLandscapeLeft
terminar pareciéndose a AVCaptureVideoOrientationLandscapeRight
y viceversa.
¿Hay alguna razón para que esto suceda? Aquí hay algunos detalles más:
No tengo ViewController haciendo el cambio de orientación automática para mi vista.
Todas las imágenes muestran [image imageOrientation]
igual a AVCaptureVideoOrientationPortrait
, pero hago un seguimiento de la orientación real y la paso a -writeImageToSavedPhotosAlbum
de forma independiente.
que estoy usando: -writeImageToSavedPhotosAlbum:orientation:completionBlock:
lo agradecería si alguien puede arrojar algo de luz sobre esto.
ACTUALIZACIÓN:
A pesar de lo que he leído en la documentación,
Si desea guardar un objeto UIImage, puede utilizar el método UIImage CGImage para obtener una CGImageRef, y echó la imagen de imageOrientation a ALAssetOrientation.
que siguió adelante y cambió la orientación que pase en:
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");
}];
Ahora, todas las imágenes a orientarse con su borde izquierdo hacia abajo, como si fueran paisaje-derecha. Todavía no lo tengo bien, pero al menos los tengo uniformemente orientados.
Otra actualización:
Esto funciona. ¿Por qué, no lo sé:
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");
}];
¿Qué es "lockedOrientation" en el último fragmento de código? – ebi