Я исследовал достаточно, чтобы получить эту работу, но не смог ее исправить. После съемки с камеры, пока у меня есть изображение, хранящееся как 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 и применяю их.
Пожалуйста, обратитесь к следующему изображению после выполнения следующих функций: