1

カメラの回転を設定しています:

stopPreview();
Camera.Parameters p = mCamera.getParameters();
p.setRotation(90);
mCamera.setParameters(p);
startPreview();

デバイスが横向きのときに写真が撮影されます。写真を縦向きに回転させる必要があります。しかし、jpeg を保存しているときは回転せず、常に水平です。

protected void onJpegPicture(byte[] data, int width, int height) {
    saveJpeg(data, file);
}

何か不足していますか?撮影後に手動で画像を回転させる必要はないと思います。カメラは私のためにこれを行うことができるはずだと思います。

setRotationパラメータは関係ありません。可能なすべての値 (0、90、180、270) を試しました。

4

3 に答える 3

3

takePicture() を呼び出す前に setParameters() を呼び出すと仮定すると、コード スニペットは機能するはずです。プレビューを開始する前ではなく、takePicture 呼び出しの直前にパラメーターを設定してみることができますが、それは問題ではありません。

画像の向きは、現在の UI の向きではなく、センサーの向きに対して相対的に決定されるため、ここではおそらく 90 を使用したくないことに注意してください。また、センサーが縦向きか横向きかはデバイスによって異なります。これはCameraInfo.orientationで確認できます。それでも、すべての回転値を試してみると、効果が見られるはずです。

この動作が見られるデバイスはどれですか? また、最終的なイメージをどのように見ていますか? 一部の画像ビューアーはまだ JPEG 回転フィールドを正しく解釈しませんが、オンデバイス ギャラリー アプリは正しく解釈する必要があります (特に既定のアプリケーションの場合)。

于 2013-08-22T00:27:48.337 に答える