3

UIImagePickerController (カメラとアルバム) デリゲートを使用して画像の向きを決定し、それに応じて回転させ、UIImageView に割り当てる方法を教えてもらえますか?

4

3 に答える 3

14

Vodkhangの答えは部分的に間違っています-最近のカメラは、写真を撮るときに画像に明示的な向きを付けます。これは約5年以上前から一般的です。

私は以前、この回答のコードを使用して、画像から直接「方向」情報を読み取って回転を実行しました。

UIImagePickerControllerカメラプレビューは横向きアプリのポートレートです

于 2011-02-21T11:38:33.270 に答える
2
    // Use this UIImagePickerController's  delegate method
    - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {
        // Getting image user just has shoot
        UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];

        // Fixing to stick with only one orientation (UIImageOrientationUp in this case)
        switch (image.imageOrientation) {
            case UIImageOrientationDown:
            case UIImageOrientationDownMirrored:
            case UIImageOrientationLeft:
            case UIImageOrientationLeftMirrored:
            case UIImageOrientationRight:
            case UIImageOrientationRightMirrored:
                image = [UIImage imageWithCGImage:image.CGImage
                                                  scale:image.scale
                                            orientation:UIImageOrientationUp]; // change this if you need another orientation
                break;
            case UIImageOrientationUp:
            case UIImageOrientationUpMirrored:
                // The image is already in correct orientation
                break;
        }

        // Do whatever you want with image (likely pass it to some UIImageView to display)
        UIImageView *imgView = [[UIImageView alloc] initWithImage:image];

        // Dismiss UIImagePickerController
        [picker dismissModalViewControllerAnimated:NO];
    }

注:プロパティをUIImageView読み取り、それに応じて表示します。imageOrientationUIImage

于 2013-10-28T17:13:26.803 に答える
-4

いいえ、UIImagePickerController は明示的に行うことはできません。

画像の内容で判断したい場合。ちょっと難しい問題です。画像の内容を理解せずに画像の向きを判断するにはどうすればよいでしょうか?

返された画像の幅と長さを調べて、それが縦長か横長かを確認するトリックを提案できます。画像を回転させるためのライブラリやコードは外部にいくつかありますが、あまり試していません。こちらのブログからご覧いただけます

于 2010-09-16T16:34:43.070 に答える