iPhone: изображение, захваченное в портретном режиме, загружается в альбомном режиме в UIImageview - PullRequest
4 голосов
/ 09 января 2012

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

Теперь, если я беру библиотеку форм изображений, она работает нормально, но если мне нужно сделать снимок, он показывает данные в альбомной ориентации. Ниже мой код обоих классов. :

Класс 1:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSData *imgData = UIImagePNGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"]);

    [picker dismissModalViewControllerAnimated:YES];
        image = [[UIImage alloc] initWithData:imgData];

    CGImageRef imgRefCrop = image.CGImage;
            UIImage *photo = [UIImage imageWithCGImage:imgRefCrop];

    PhotoCropperPage *photoCropper = [[PhotoCropperPage alloc] 
                                           initWithPhoto:photo
                                                 delegate:self                                                  
                uiMode:PCPUIModePresentedAsModalViewController
                                          showsInfoButton:YES];

    [photoCropper setMinZoomScale:0.3f];
    [photoCropper setMaxZoomScale:4.0f];
    [self.navigationController pushViewController:photoCropper animated:YES];
}

Класс 2:

- (void) loadPhoto
{
    if (self.photo == nil) {
        return;
    }

    CGFloat w = self.photo.size.width;
    CGFloat h = self.photo.size.height;

    CGRect imageViewFrame = CGRectMake(0.0f, 0.0f, roundf(w / 2.0f), roundf(h / 2.0f));
    self.scrollView.contentSize = imageViewFrame.size;

    UIImageView *iv = [[UIImageView alloc] initWithFrame:imageViewFrame];
    iv.image = self.photo;
    [self.scrollView addSubview:iv];
    self.imageView = iv;
    [iv release];
}

Я не понимаю, где я делаю ошибку? Кто-нибудь может указать мне? Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 10 января 2012

Только что нашел отличный ответ на ваш вопрос.Вот ссылка: https://stackoverflow.com/a/5427890/1047258

И тогда вы можете сделать что-то подобное:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage *theImage = [[info objectForKey:@"UIImagePickerControllerOriginalImage"]fixOrientation];
  //rest of your code
}

, и изображение будет вашим изображением с правильной ориентацией.Это сработало в моем проекте

Надеюсь, это поможет.

0 голосов
/ 09 января 2012

будьте осторожны, чтобы не выбросить данные об ориентации ... Попробуйте это:

image = [[UIImage alloc] initWithData:imgData];

CGImageRef imgRefCrop = image.CGImage;
UIImage *photo = [UIImage imageWithCGImage:imgRefCrop scale:image.scale orientation:image.orientation ];

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

...