2009-04-19 9 views
0

イメージピッカーからUIImageを取得し、それをUIImageViewに入れています。通常の画像では正常に動作しますが、iphoneカメラで撮影した画像では90度回転することがあります。iPhoneカメラの写真が回転しています - CGAffineTransformInvert:特異行列

これらのイメージの1つに後でアクセスすると(すでにディスクに保存されています)、私は上記のエラーに気付きました。

アイデア?私は、写真が撮られている間、カメラの位置に関する余分なexifメタデータを保存しているiphoneと何か関係があると仮定しますが、写真の1つはポートレートモードで撮影されていました。

答えて

3

私が使用した解決策は、imageOrientationプロパティで指定されたとおりに画像を反転することです。&このトリックを行うコードは、UIImage fixです。

UIImageViewは自動的に&が反転するので、すべての場合に問題なく表示されます。

+0

誰もこの問題を報告していないようですが、このコードはCGContextDrawImage(UIGraphicsGetCurrentContext()、CGRectMake(0、0、width、height)、imgRef); 'で使用するとiOS 5アプリケーションでクラッシュしますポートレートモードで撮影されたカメラで撮影された写真です(ただし、風景ではありません)。 –

0

携帯電話には回転メタデータが画像とともに表示され、表示するために回転させる方法を示すことは間違いありません。これはEXIFタグです。それはまったく違うものかもしれません。アップルがあなたにUIImageの形で伝えていることはすべてです。

UIImageは多くの点で、CGImageの周りの単純なラッパーです。 CGImageイメージは、この場合、生のイメージデータのみを知っている/気にする「ダム」オブジェクトです。回転情報と同様に高レベルなものではありません。 UIImageは回転と他の情報と一緒にこれを単一の便利なクラスにまとめました。特権の1つは、UIImageが自動的に正しい回転を描く方法を知っていることです。

ゴールデンは基本的にはになります。ほとんどのアプリでCGImageとのやりとりを避けることができます。 UIImageは、あなたが望むほぼすべてを行い、より高度なローテーション情報なども処理する必要があります。それ以外の場合は、ほとんどの画像が正しく描画される奇妙な状況に陥りますが、一部は回転します。