1

次のように、iPhone のフォト ライブラリから問題なく画像を切り抜くことができます。

CGRect topRect = CGRectMake(0, 0, image.size.width, image.size.height / 2);
CGImageRef topCroppedCGImageRef = CGImageCreateWithImageInRect(image.CGImage, 
                                                               topRect);
UIImage *croppedImage = [[UIImage alloc] initWithCGImage:topCroppedCGImageRef];
CGImageRelease(topCroppedCGImageRef);

ただし、画像がカメラからのものである場合、これは機能しません。具体的には、トリミングされた画像が回転し、トリミングされた部分が期待どおりになりません。周りを読んだ後、この問題は比較的一般的であるように思えます。しかし、さまざまなコード修正を試みましたが、うまくいきません (まだ、回転、予期しないトリミング、さらには歪みの問題もあります)。したがって、上記のトリミングがカメラからの画像に対してのみ機能しない理由を実際に理解したいと思います。

上記のトリミング方法が、iPhone のカメラからの画像で機能しないのはなぜですか?

4

1 に答える 1

2

この有名な投稿 - Resize a UIImage the right wayで指摘されているように、これは、iPhone のカメラで撮影した写真を扱うときに絶対に必要な EXIF 方向サポートなどの機能を除外しているためです。

デフォルトでは (縦向きで撮影された写真)、画像にはEXIF 方向フラグ = 6 があり、これは画像が反時計回りに 90 度回転していることを意味します。

$ identify -format "%[EXIF:orientation]" myimage.jpg 
6
于 2012-10-02T21:49:20.070 に答える