Я достаточно исследовал, чтобы заставить это работать, но не смог это исправить. После съемки с камеры, пока у меня есть изображение, сохраненное как UIImage, все в порядке, но как только я сохранил это изображение как представление PNG, оно повернулось на 90 градусов.
Ниже приведен мой код и все, что я пробовал:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info valueForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:(NSString*)kUTTypeImage])
{
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.originalPhoto = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSLog(@"Saving photo");
[self saveImage];
NSLog(@"Fixing orientation");
delegate.fixOrientationPhoto = [self fixOrientation:[UIImage imageWithContentsOfFile:[delegate filePath:imageName]]];
NSLog(@"Scaling photo");
delegate.scaledAndRotatedPhoto = [self scaleAndRotateImage:[UIImage imageWithContentsOfFile:[delegate filePath:imageName]]];
}
[picker dismissModalViewControllerAnimated:YES];
[picker release];
}
- (void)saveImage
{
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSData *imageData = UIImagePNGRepresentation(delegate.originalPhoto);
[imageData writeToFile:[delegate filePath:imageName] atomically:YES];
}
Здесь функции fixOrientation и scaleAndRotateImage взяты из здесь и здесь соответственно. Они отлично работают и поворачивают изображение, когда я применяю их к UIImage, но не работают, если я сохраняю изображение как представление PNG и применяю их.
Пожалуйста, посмотрите на следующую картинку после выполнения вышеуказанных функций: