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);
}
これで問題は解決しませんでした。さらに検索していくつかのバリエーションを試した後、正しい向きでロードできないようです。
どんな助けでも素晴らしいでしょう!