質問
私はこれをandroid開発者フォーラムに投稿しましたが、ここで連絡を取りたいと思いました。
アプリのアクティビティの1つは写真を撮ることでした。画像プレビューは、画面上で正しい方法を1.5& 1.6ですが、保存すると、jpgが90度回転して保存されます。
表示するときにリアルタイムで回転できます。保存したら、再保存できると思います。私の問題は、写真を撮るときに正しく保存したいことです。
1.5でコンパイルされたアプリは正常に動作します。メモリの問題がいくつかありました 1.6奇妙なb / cであった画像サイズのため、画像サイズが増加しました Surfaceholder / imagecapture付きの写真を撮って写真を撮るとき 折り返し電話。サイズを変更してこれらの画像を再表示するのを修正したようです ビットマップファクトリーマトリックスを使用します。しかし、私のカメラは今回転しています すべて90度。 surfaceChangedの私のオーバーライドのようです 何もしません。これは、回転を90に設定した場所です(できません なぜか、10か月前だったのを思い出してください!)。回転させてみました 90度、0度のカメラパラメータパラメータ。見えない 何かするために...
解決
カメラドライバーはデバイスの向きを認識しません。 1.5および1.6では、takePicture()を呼び出す前に、parameters.set(" rotation"、degree)を呼び出して回転についてドライバーに通知する必要があります。 2.0には、新しいAPI setRotationがあります(以下を参照)。一部のデバイスは画像全体を回転させ、EXIFヘッダーの向きを設定するだけです。
http://developer.android.com /reference/android/hardware/Camera.Parameters.html#setRotation(int)
デバイスの向きを度で設定します。たとえば、デバイスの自然な位置が横長であるとします。ユーザーが2048x1536の解像度で横長モードで写真を撮る場合、回転は0に設定する必要があります。ユーザーが電話を時計回りに90度回転させる場合、回転は90に設定する必要があります。カメラドライバーは、画像を回転させずにEXIFヘッダーに方向を設定できます。または、ドライバーが画像とEXIFサムネイルを回転させる場合があります。 Jpeg画像を回転させると、EXIFヘッダーの方向が失われるか、1になります(行#0が上部、列#0が左側)。
パラメータ
rotation デバイスの向き(度単位)。回転は0、90、180、または270のみです