Выбор изображения всегда дает пейзажное изображение
Я использовал следующий код, чтобы забрать изображение из галереи телефона:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),
USE_LIBRARY_PIC_REQUEST);
В onActivityResult (), он дает путь к файлу, я пытался получить растровое изображение с помощью filepath, но он всегда дает его в ландшафтном представлении. Есть ли способ получить это изображение в портретном виде всегда? Код для получения filepath:
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
Вот как я получил растровое изображение, используя путь к файлу:
Bitmap bmp=BitmapFactory.decodeFile(selectedImagePath);
1 ответ:
Чтобы получить исходное изображение, вы можете использовать этот метод.
public static Bitmap getBitmap(String uri, Context mContext) { Bitmap bitmap = null; Uri actualUri = Uri.parse(uri); BitmapFactory.Options options = new BitmapFactory.Options(); options.inTempStorage = new byte[16 * 1024]; options.inSampleSize = 2; ContentResolver cr = mContext.getContentResolver(); float degree = 0; try { ExifInterface exif = new ExifInterface(actualUri.getPath()); String exifOrientation = exif .getAttribute(ExifInterface.TAG_ORIENTATION); bitmap = BitmapFactory.decodeStream(cr.openInputStream(actualUri), null, options); if (bitmap != null) { degree = getDegree(exifOrientation); if (degree != 0) bitmap = createRotatedBitmap(bitmap, degree); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; } public static float getDegree(String exifOrientation) { float degree = 0; if (exifOrientation.equals("6")) degree = 90; else if (exifOrientation.equals("3")) degree = 180; else if (exifOrientation.equals("8")) degree = 270; return degree; } public static Bitmap createRotatedBitmap(Bitmap bm, float degree) { Bitmap bitmap = null; if (degree != 0) { Matrix matrix = new Matrix(); matrix.preRotate(degree); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); } return bitmap; }