2

コモンウェアのカメラ サンプルを使用して、写真を撮る Android アプリを作成しようとしています。プレビューは、カメラが 90 度回転したことを示しており、以下を適用して修正しました。

camera.setDisplayOrientation(90);

ただし、画像は逆に 90 度回転して保存されます。画像が保存されるときに、ビューアーと同じ「アスペクト」で保存されるように、これを調整するにはどうすればよいですか?

教えてください、TIA

4

1 に答える 1

0

この投稿によると、これは一部のデバイスでのみ発生し、メーカーによって異なります。

次のように、デバイスの向きの角度を検出し、それに応じて回転を適用することで、この問題を回避することができました。

            ExifInterface exitInterface = new ExifInterface(imagePath);

            int orientation = exitInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
            int degree = 0;

            switch (orientation){
            case ExifInterface.ORIENTATION_ROTATE_90:
                degree = 90;
                break;
            case ExifInterface.ORIENTATION_ROTATE_180:
                degree = 180;
                break;
            case ExifInterface.ORIENTATION_ROTATE_270:
                degree = 270;
                break;
            }

次に、カスタム メソッドを使用してビットマップを回転させます。

    public static Bitmap rotateImage(Bitmap src, float degree) 
{
        // create new matrix
        Matrix matrix = new Matrix();
        // setup rotation degree
        matrix.postRotate(degree);
        Bitmap bmp = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
        return bmp;
}
于 2014-06-03T21:43:46.440 に答える