Вращение после выбора UIImage библиотеки

Когда я выбрал портретную фотографию из библиотеки, вот так: http://img15.hostingpics.net/thumbs/mini_919836image1.png

UIImage, возвращаемый библиотекой, поворачивается. http://img15.hostingpics.net/thumbs/mini_826263Image2.png

Вот мой код:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    UIImage* originalImg = [editInfo objectForKey:UIImagePickerControllerOriginalImage];
    [self useImage:originalImg];
}

Как я могу избежать этого?

2 ответа

Решение

Вы ранее делали снимок с помощью средства выбора изображений в своем приложении, а затем сохраняли изображение? Если да, вы установили ориентацию при сохранении изображения? Вам нужно.

Попробуйте добавить инструкцию журнала или отладку, чтобы проверить, какая ориентация установлена ​​на изображении.

Если ориентация установлена ​​на изображении, тогда UIImageView автоматически отрендерит изображение правильно.

Если (в будущем) вы собираетесь взять данные изображения и загрузить их куда-то, вам нужно будет проверить ориентацию и заново нарисовать изображение, применяя соответствующее преобразование к контексту.

self.imageData=[info objectForKey:@"UIImagePickerControllerOriginalImage"];    
CIImage *image = [[CIImage alloc] initWithImage:[info objectForKey:@"UIImagePickerControllerOriginalImage"]];
self.imageData=[UIImage imageWithCIImage:image scale:self.imageData.scale orientation:self.imageData.imageOrientation];

Вы можете использовать следующие методы, чтобы сохранить ориентацию изображения:

 [UIImage imageWithCIImage:(CIImage *) scale:(CGFloat) orientation:(UIImageOrientation)];
 [UIImage imageWithCGImage:(CGImageRef) scale:(CGFloat) orientation:(UIImageOrientation)];
Другие вопросы по тегам