Я использую следующий код, чтобы получить ориентацию выбранного изображения, чтобы, если оно было выбрано вертикально, если оно выбрано из галереи, оно не будет отображаться горизонтально.Изображение повернуто, если выбрано из галереи
Ошибка возникает в файле Файл imageFile = новый файл (selectedImage.toString()); в параметре selectedImage.toString()), поскольку, когда я изменил начальный int rotate = 90 и выбрал вертикальное изображение, результат был хорошим.
Я передаю параметр в файл правильно?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
BitmapFactory.Options options;
if (resultCode == RESULT_OK && requestCode == PICTURE_SELECTED) {
try {
options = new BitmapFactory.Options();
options.inSampleSize = 4;
Uri selectedImage = data.getData();
InputStream stream = getContentResolver().openInputStream(selectedImage);
Bitmap yourSelectedImage = BitmapFactory.decodeStream(stream, null, options);
stream.close();
//orientation
try {
int rotate = 0;
try {
File imageFile = new File(selectedImage.toString());
ExifInterface exif = new ExifInterface(
imageFile.getAbsolutePath());
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
} catch (Exception e) {
e.printStackTrace();
}
Matrix matrix = new Matrix();
matrix.postRotate(rotate);
yourSelectedImage = Bitmap.createBitmap(yourSelectedImage , 0, 0, yourSelectedImage.getWidth(), yourSelectedImage.getHeight(), matrix, true); }
catch (Exception e) {}
//end of orientation
imgButton.setScaleType(ImageView.ScaleType.FIT_CENTER);
imgButton.setImageBitmap(yourSelectedImage);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Could not open file.", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "Image was not selected", Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
Добавьте эту строку в вашем манифесте внутри вашей деятельности, в которой изображение открытия галереи как этот <деятельность андроида: имя = андроид «ui.ui.activity.MainActivity.»: ConfigChanges = "keyboardHidden | ориентация | screenSize " android: label =" @ string/title_activity_main " android: screenOrientation =" portrait "/> –
Помог ли этот код немного? –
Нет, ошибки: android: configChanges и screenOrientation не разрешены там – cgeekmt