iPhone делает снимок при сохранении всегда пейзаж - PullRequest
0 голосов
/ 23 июня 2011

У меня есть это приложение для iPhone, которое позволяет пользователям делать снимки и сохранять их в онлайн-базе данных. Моя проблема в том, что каждый раз, когда пользователь делает снимок и сохраняет его, картинка получается в альбомной ориентации, даже если она была сделана в портретном режиме. Это приводит к растяжению портретной картинки.

Это код, который я использую при съемке:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];

    NSData *imgData=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);
    UIImage *img=[[UIImage alloc] initWithData:imgData];

    if(img.size.width < img.size.height){
        NSLog(@"width < height");
        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    }
    else{
        NSLog(@"width > height");
        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 460, 320)];
    }

    imageView.image = img;
    [img release];
    [[self view] fillPreviewWithImg: imageView];
    [[self view] setImage: imageView.image];
}

По сути, я делаю снимок, создаю UIImage, проверяю, портрет это или пейзаж, создаю соответствующий UIImageView и затем устанавливаю изображение в UIImageView. После этого я просто вызываю несколько методов для настройки изображения в главном окне.

Я считаю, что проблема с растяжением связана не с PHP, а с кодом Objective-C, но я не могу понять, как и почему это происходит.

У кого-нибудь из вас есть идея?

Спасибо

Masiar

1 Ответ

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

Посмотрите на свойство imageOrientation класса UIImage.У вас может быть изображение шириной 320 и высотой 480, но с ориентацией ландшафта.Это содержится в информации EXIF, и программа просмотра должна использовать эту информацию об ориентации для правильного поворота изображения.Одной проверки ширины и высоты изображения недостаточно, чтобы узнать ориентацию, и это вызывает растяжение, которое вы видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...