Ориентация Bitmap на ImageView

322
23 августа 2017, 16:31
 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Bitmap mBitmap ;
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
        String _path = Environment.getExternalStorageDirectory() + File.separator + "TakenFromCamera.jpg"+time;
        mBitmap = BitmapFactory.decodeFile(_path);
        ExifInterface exif = null;
        try {
            exif = new ExifInterface(_path);
        } catch (IOException e) {
            e.printStackTrace();
        }
        int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_UNDEFINED);

        textView.setText(" ");
        if(mBitmap.getHeight() < mImageView.getHeight())
            mBitmap = RotateBitmap(mBitmap, ExifInterface.ORIENTATION_ROTATE_90);
        else
            mBitmap = RotateBitmap(mBitmap,orientation);
        mImageView.setImageBitmap(mBitmap);
    }
    else  if(requestCode == GALLERY_REQUEST && resultCode == Activity.RESULT_OK)
    {
        textView.setText(" ");
        Uri selectedImage = data.getData();
        try{
          mBitmap   = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage);
    } catch (IOException e) {
            mBitmap= null;
            e.printStackTrace();
    }
        ExifInterface exif = null;
        try {
            exif = new ExifInterface(selectedImage.getPath());
        } catch (IOException e) {
            e.printStackTrace();
        }
        int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_UNDEFINED);
        RotateBitmap(mBitmap,orientation);
        mImageView.setImageBitmap(mBitmap);
    }
 public Bitmap RotateBitmap(Bitmap bitmap, int orientation) {
    Matrix matrix = new Matrix();
    switch (orientation) {
        case ExifInterface.ORIENTATION_NORMAL:
            return bitmap;
        case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
            matrix.setScale(-1, 1);
            break;
        case ExifInterface.ORIENTATION_ROTATE_180:
            matrix.setRotate(180);
            break;
        case ExifInterface.ORIENTATION_FLIP_VERTICAL:
            matrix.setRotate(180);
            matrix.postScale(-1, 1);
            break;
        case ExifInterface.ORIENTATION_TRANSPOSE:
            matrix.setRotate(90);
            matrix.postScale(-1, 1);
            break;
        case ExifInterface.ORIENTATION_ROTATE_90:
            matrix.setRotate(90);
            break;
        case ExifInterface.ORIENTATION_TRANSVERSE:
            matrix.setRotate(-90);
            matrix.postScale(-1, 1);
            break;
        case ExifInterface.ORIENTATION_ROTATE_270:
            matrix.setRotate(-90);
            break;
        default:
            return bitmap;
    }
 try{

        Bitmap bmRotated = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        return bmRotated;
}
    catch (OutOfMemoryError e) {
    textView.setText(e.getMessage());
    return null;
}
    }

Скажите пожалуйста, как узнать занимает ли Bitmap всю площадь ImageView Хочу в зависимости от ориентации картинки поворачивать её пока она не займёт всю площадь ImageView

Метод RotateBitmap не помогает

READ ALSO
Добавить элементы в listview из БД

Добавить элементы в listview из БД

В actionBar находится кнопка "Добавить", при нажатии на которую должен отображаться фрагмент с ListView, в котором содержится список данных, взятых...

244
StringUtil cannot be resolved

StringUtil cannot be resolved

Ругается на строки resultappend(StringUtil

336
работа с json файлами [требует правки]

работа с json файлами [требует правки]

У меня есть пакет provider/lang, в нем два языковых файлаОдин из них дефолт, на случай если язык не найден

231
как упаковать и распаковать ARJ архивы в JAVA

как упаковать и распаковать ARJ архивы в JAVA

Как упаковать и распаковать несколько текстовых файлов в ARJ архив и наоборот на JAVAВ проекте не рекомендуется использование ARJ архиваторов

251