Сохранение фотографии на основе ориентации устройства - PullRequest
0 голосов
/ 11 июня 2011

Следующий код дает мне фотографию в портретном режиме независимо от ориентации.Как убедиться, что фотография соответствует текущей ориентации?

-(void) TakePhotoWithCamera
{
    [self startCameraPickerFromViewController:self usingDelegate:self];
}

 - (BOOL)startCameraPickerFromViewController:(UIViewController*)controller usingDelegate:(id<UIImagePickerControllerDelegate>)delegateObject  
{  
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        picker.allowsImageEditing = YES;
        picker.delegate = self;
        [controller presentModalViewController:picker animated:YES];
        [picker release];   
    }

    return YES;  
}  

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage * img = [info objectForKey:@"UIImagePickerControllerEditedImage"];
    [self useImage:img];
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
}

-(void)useImage:(UIImage *)theImage {
    NSData *addImageData = UIImagePNGRepresentation(theImage);
    // Here we return the Image
}

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

1 Ответ

0 голосов
/ 12 июня 2011

Изображение, полученное с камеры iPhone, будет иметь информацию об ориентации (UIImageOrientation) (информация EXIF).Это говорит точно, в какой ориентации изображение.Если средство просмотра способно понять эту информацию, оно отобразит их правильно, иначе вы увидите изображения такими, какие они есть (я думаю, Safari не учитывает ориентацию, просто сравните открытие с safari).

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

пожалуйста, проверьте следующий пост и используйте функцию scaleAndRotate.Это решит вашу проблему. UIImagePickerController Предварительный просмотр камеры - портрет в ландшафтном приложении. .

Также взгляните на мой ответ по смежному вопросу (как сделать его только Портретным или Пейзажным), он также может вам помочь. UIImagePickerController - SourceType Camera - Разрешить фотографировать только портретную ориентацию

...