2011-06-23 10 views
0

私はこのiPhoneアプリケーションを使用して、ユーザーが写真を撮ってオンラインでデータベースに保存できるようにしました。私の問題は、ユーザーが写真を撮って保存するたびに、ポートレートモードで撮影されているにもかかわらず、写真が風景になるということです。これにより、ポートレート画像が引き伸ばされます。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に挿入します。その後、メインビューでイメージを設定するための2つのメソッドを呼び出します。

私はストレッチの問題はPHPではなくObjective-Cコードに限定されていると信じていますが、この動作がどうやって起こるのかは分かりません。

あなたは誰ですか?

おかげで、

Masiar

答えて

0

はUIImageクラスのimageOrientationプロパティを見てください。 320の幅と480の高さですが、横向きの画像を持つことができます。これはEXIF情報に含まれており、この向き情報を使用して画像を適切に回転させるのは表示プログラムの責任です。画像の幅と高さを確認するだけでは方向を知るには不十分で、これはあなたが見ている伸びを引き起こしています。

+0

ランドスケープピクチャまたはポートレートピクチャを取ったときにログが正しく印刷されましたが、UIImageViewが正しく作成されていても、ポートレート用に引き伸ばされていて、ランドスケープ用に正しい場合でも可能ですか?さらに、私はUIImageOrientationをどのように使いますか?私はそれを見てきましたが、あいまいです。 – Masiar

+0

'UIImage * img = [[UIImage alloc] initWithData:imgData];'これのimageOrientationを確認し、ポートレートの場合はCGRectが320,460のイメージビューを作成し、そうでない場合は460,320を使用します。 –

+0

私は次のようなことをしました: 'case UIImageOrientationUp: NSLog(@" width Masiar

関連する問題