ドロイドデバイスは - カメラから撮影した画像を回転させていないのだろうか? (Camera.Parameters)

StackOverflow https://stackoverflow.com/questions/1934378

  •  20-09-2019
  •  | 
  •  

質問

私が撮影した画像データを回転させるためにカメラを依頼するために、このカメラのコードを使用しています:

Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);

これはドロイドを除いて、すべての携帯電話上で動作するようです。誰がこれを見ていますか?画像データは、しかし、ドロイドのネイティブカメラアプリがOKポートレート画像を生成し、常に風景です。

ドロイドが唯一の新しいCamera.Parameters.setRotation()方法を尊重する場合、私は疑問に思うが、これは唯一のAPIレベル5で利用可能であるように思わ?

役に立ちましたか?

解決

setRotation文書で説明したように、

回転だけ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を呼び出す必要があります想像します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top