1

Android ギャラリーから画像を読み込むインテントを使用しています。私が試したいくつかのデバイスでは正常に動作しますが、一部のデバイスでは画像が間違った向きで読み込まれるようです。通常、縦向きではなく横向きで表示されます。

いくつかの検索を行ったところ、EXIF データに関するいくつかの提案が見つかり、次のことを試しました。

            if(resultCode == RESULT_OK){

                Uri selectedImage = data.getData();
                String[] filePathColumn = {MediaStore.Images.Media.DATA};

                Cursor cursor = getContentResolver().query(
                                   selectedImage, filePathColumn, null, null, null);
                cursor.moveToFirst();

                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String filePath = cursor.getString(columnIndex);
                cursor.close();

                String myFile = selectedImage.toString();
                int orientation = 0;
                try {
                    ExifInterface exif = new ExifInterface(myFile);
                    orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
                } catch (IOException e) {
                    e.printStackTrace();
                }

                Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
                Bitmap rotatedBitmap = null;
                Matrix matrix = new Matrix();

                switch(orientation){

                    case 3:

                        matrix.postRotate(180);
                        break;

                    case 6:

                        matrix.postRotate(90);
                        break;

                    case 8:

                        matrix.postRotate(270);
                        break;

                }

                rotatedBitmap = Bitmap.createBitmap(yourSelectedImage, 0, 0, yourSelectedImage.getWidth(), yourSelectedImage.getHeight(), matrix, true);
                _mJazzView.setBackground(rotatedBitmap);

            }

これで問題は解決しませんでした。さらに検索していくつかのバリエーションを試した後、正しい向きでロードできないようです。

どんな助けでも素晴らしいでしょう!

4

1 に答える 1