2012-01-09 12 views
4

私はポートレートモードで画像をキャプチャしてから、画像データを持つ別のクラスに移動し、その画像をUIScrollViewのUIImageViewに表示するアプリケーションを開発しています。iPhone:ポートレートモードでキャプチャされた画像がUIImageviewで横向きモードで読み込まれました

今私はイメージフォームライブラリを取っていますが正常に動作していますが、私は画像を横長モードで表示している画像をキャプチャする必要がある場合。以下は両方のクラスの私のコードです。 :

クラス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]; 
} 

私は得ていないのですか?誰かが私を指摘できますか?前もって感謝します。

+0

[that] [1]あなたは何をお探しですか? [1]:http://stackoverflow.com/questions/5973105/image-clicked-from-iphone-in-portrait-mode-gets-rotated-by-90-degree – Novarg

答えて

7

あなたの質問に対するすばらしい答えが見つかりました。ここにリンクです:https://stackoverflow.com/a/5427890/1047258

そして、あなたはそのようなこと行うことができます。

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

をしてtheImageは正しい方向にあなたのイメージになります。それは私のプロジェクトで働いた

私は助けてくれることを願っています。

+0

ありがとうございました.. :) – Sarah

+0

xcode 7でない –

0

方位データを捨てないように注意してください...これを試してみてください:

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

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

また、あなたは画像の向きに応じて、右のピクセルをトリミングしていることを確認したいと思います。

+0

それは許可していません私はimage.orientationでオリエンテーションを設定する。 – Sarah

+0

'+ [UIImage imageWithCGImage:]'の代わりに '+ [UIImage imageWithCGImage:scale:orientation:]'を呼び出すことで新しい 'UIImage'に向きを設定しません。もしあなたがそれを行うことができないなら、 'UIImage'をあなたの' CGContext'にレンダリングする前にそれを回転/反転させる必要があります。 – nielsbot

+0

これは私がやっていることです。私はスケールを設定することができますが、オリエンテーションフィールドでは画像を書きます。ドット(。)の表記の後にオリエンテーションのようなオプションはありません – Sarah

関連する問題