3

これを android dev forums に投稿しましたが、ここに連絡したかったのです。

私たちのアプリのアクティビティの 1 つは、写真を撮ることでした。画像プレビューは 1.5 & 1.6 の画面では正しい方法で表示されますが、保存すると jpg が 90 度回転して保存されます。

表示するときにリアルタイムで回転できますし、一度保存したら再保存できたのではないでしょうか。私の問題は、写真を撮るときに正しく保存したいということです。

1.5 でコンパイルされている間、私のアプリは正常に動作します。画像サイズが原因で 1.6 でいくつかのメモリの問題が発生しました。これは奇妙でした。サーフェスホルダー/画像キャプチャ コールバックを使用して写真を撮ると、画像サイズが大きくなりました。bitmapfactory マトリックスを使用してサイズを変更することで、これらの画像の再表示を修正したようです。しかし、私のカメラは今、すべてを 90 度回転させています。回転を 90 に設定していたときの surfaceChanged のオーバーライドは何もしていないようです (理由は思い出せません。10 か月前のことです!)。カメラ パラメータ パラメータを 90 度、0 度で回転させてみました。何もしていないようです... 何か考えはありますか?

4

1 に答える 1

6

カメラのドライバーは、デバイスの向きを知りません。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に設定する必要があります。アプリケーションはOrientationEventListenerを使用してこのパラメーターを設定できます。カメラドライバーは、画像を回転させずにEXIFヘッダーで向きを設定できます。または、ドライバーが画像とEXIFサムネイルを回転させることもできます。Jpeg画像を回転させると、EXIFヘッダーの方向が失われるか1になります(行#0が上、列#0が左側)。
パラメータ
rotation デバイスの向き(度単位)。回転は0、90、180、または270のみです。

于 2009-11-30T04:07:24.280 に答える