Ich benutze Code ähnlich wie in diesem Blog http://blog.logichigh.com/2008/06/05/uiimage-fix/ zu finden, um die Bilder zu drehen, nachdem ich sie mit der iPhone-Kamera genommen habe. Ich benutze AVFoundation
.UIImage Orientierung, wenn iPhone auf Z-Achse ist
Ich habe den entsprechenden Code hier extrahiert:
case UIImageOrientationUp: //EXIF = 1
transform = CGAffineTransformIdentity;
break;
case UIImageOrientationUpMirrored: //EXIF = 2
transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);
transform = CGAffineTransformScale(transform, -1.0, 1.0);
break;
case UIImageOrientationDown: //EXIF = 3
transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);
transform = CGAffineTransformRotate(transform, M_PI);
break;
case UIImageOrientationDownMirrored: //EXIF = 4
transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
break;
case UIImageOrientationLeftMirrored: //EXIF = 5
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);
transform = CGAffineTransformScale(transform, -1.0, 1.0);
transform = CGAffineTransformRotate(transform, 3.0 * M_PI/2.0);
break;
case UIImageOrientationLeft: //EXIF = 6
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);
transform = CGAffineTransformRotate(transform, 3.0 * M_PI/2.0);
break;
case UIImageOrientationRightMirrored: //EXIF = 7
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeScale(-1.0, 1.0);
transform = CGAffineTransformRotate(transform, M_PI/2.0);
break;
case UIImageOrientationRight: //EXIF = 8
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);
transform = CGAffineTransformRotate(transform, M_PI/2.0);
break;
Dies funktioniert gut, wenn das Telefon auf der X
oder Y
Achse gehalten wird.
Allerdings, wenn ich das Telefon auf der Z
Achse halte. Es zeigt immer, dass die UIImage
EXIF = 2
hat.
Ich weiß, ich kann den Beschleunigungsmesser verwenden, um zu erkennen, wenn das Gerät auf der Z
Achse ist. Ich bin jedoch nicht in der Lage, einen Pfad zu sehen, der mich dazu bringt, zwischen den Bildern zu unterscheiden, wenn sie mit dieser Markierung markiert werden, da sie immer noch EXIF = 2
haben.
, d. H. Es wird mir erlauben, zwischen Fotos zu unterscheiden, die auf dem Z aufgenommen wurden. Aber es erlaubt mir nicht, zwischen den Fotos selbst zu unterscheiden, z. Landscape1 (iPhone Home-Taste links, Portrait, Landscape2 (iPhone Home-Taste rechts)
Welche Version von IOS verwenden Sie? –
Das Telefon, auf dem ich teste, hat iOS 6. –
Könnte es möglich sein, dass Sie das Gyroskop verwenden müssen? –