ドロイドデバイスは - カメラから撮影した画像を回転させていないのだろうか? (Camera.Parameters)
-
20-09-2019 - |
質問
私が撮影した画像データを回転させるためにカメラを依頼するために、このカメラのコードを使用しています:
Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);
これはドロイドを除いて、すべての携帯電話上で動作するようです。誰がこれを見ていますか?画像データは、しかし、ドロイドのネイティブカメラアプリがOKポートレート画像を生成し、常に風景です。
ドロイドが唯一の新しいCamera.Parameters.setRotation()
方法を尊重する場合、私は疑問に思うが、これは唯一のAPIレベル5で利用可能であるように思わ?
解決
回転だけJPEGのEXIFヘッダに記憶することができます。ドロイドでは実際にそうであること。あなたはこれを確認するためにjheadのようなJPEGヘッダ読み取りツールを使用することができます。また、あなたの向きタグを読み取るために ExifInterface API に使用することができますプログラムます。
他のヒント
setRotation
もNexus Oneの上で私のために動作していないようでしたが、私はAndroidのカメラアプリ自体の例を以下で動作するように画像の回転を手に入れた。
ソースコードはここにあります:
https://android.googlesource.com/platform/packages/apps/Camera
Camera.javaで始めていますが、ImageManager.java、Util.java、およびその他のファイルを見ることになります。
基本的な考え方は、向きの変更のために耳を傾け、向きはあなたが絵をスナップ時に何であるかキャプチャし、です。あなたは絵がコールバックでバイトを取得するときに、あなたはビットマップ上での回転をして、ビットマップを操作します。そして、JPEGに戻って回転したビットマップを変換します。作業が完了したら、あなたはこの回転用カメラアプリからのコードの衝撃的な金額をコピーしなければならなかったでしょう。
ドロイドは、それぞれ、APIレベル5及び6であるアンドロイド2.0(さて、今2.0.1)を実行します。
だから、2.0+ドロイドのみ(もっと賢明な)を尊重することを回転のためのAPIは非常に可能です。
しかし、私はあなたの懸念は、デバイスの種類やOSのバージョンの範囲間の互換性だと思いますので、私はあなたが(android.os.Build.VERSION_CODES
を使用して)OSのバージョンを検出した後、リフレクション経由2.0+ APIを呼び出す必要があります想像します。