2014-04-23 4 views
0

Я использую камеру для съемки в приложении IOS. Это работает, единственная проблема, с которой я сталкиваюсь, - это когда я пытаюсь выяснить, как пользователь держал устройство при съемке.UIImageOrientation/UIImagePickerController

Было бы намного лучше, если бы я мог правильно отображать изображения, а не вверх ногами или вращаться на 90 градусов.

Ищете решение приводит меня к тому, что я должен использовать imageOrientation из UIImage, но в действительности:

theImage.imageOrientation is always equal to UIImageOrientationUp 

Что я упускаю?

Я провел различные исследования и эксперименты, но ничего не изменилось. Я не показываю больше кода на данный момент, по той простой причине, я не знаю, какую часть показать, чтобы помочь найти проблему.

ответ

1

Поскольку я смог найти решение самостоятельно. Я поставил его здесь, если это может быть полезно кому-то другому.

Рассматривая значение поля «imageOrientation» на сохраненном изображении (например, я делал), по какой-то причине всегда появляется как UIImageOrientationUp. С другой стороны, глядя на него внутри imagePickerController: didFinishPickingMediaWithInfo: гораздо более значим.

После еще некоторых исследований и испытаний, я закончил с методом похожим, что:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    …… 
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
    …… 

    if ((image.imageOrientation==UIImageOrientationLeft)|| 
     (image.imageOrientation==UIImageOrientationRight)|| 
     (image.imageOrientation==UIImageOrientationDown)) { 
     UIGraphicsBeginImageContext(image.size); 
     [image drawAtPoint:CGPointMake(0.0, 0.0)]; 
     image=UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 

    NSData *mediaData = UIImagePNGRepresentation(image); 
    …… 
} 

И тогда моя картина показывает правильную ориентацию, когда я хочу, чтобы использовать его в дальнейшем в моем приложении.