How can i use the Orientation correct for images

Posted by user3578109 on Stack Overflow See other posts from Stack Overflow or by user3578109
Published on 2014-06-04T12:38:20Z Indexed on 2014/06/04 15:25 UTC
Read the original article Hit count: 146

Filed under:
|
|
|

I´m learning android/java by myself @the moment and i have a problem with a part of my app i´m learning on.

I made the code with help of the www and my problem is that if i open an image from the gallery it´s send to the edit activity but in the activity pictures what are made in portrait mode are displayed always wrong (90° to the right side)....

The codes are

Matrix

private Bitmap rotateBitmapToOrientation(Bitmap b, int orientation){
     Matrix matrix = new Matrix();
     matrix.postRotate(orientation);
     Canvas offscreenCanvas = new Canvas();
     offscreenCanvas.drawBitmap(b, matrix, null);
     return b;
}

and the other one

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case PICK_IMAGE_FROM_GALLERY:
            {
                if (resultCode == RESULT_OK)
                {
                        Log.d(TAG, "Got Picture!");
                        Log.d(TAG,"File type - " + data.getType());
                        Uri photoUri = data.getData();
                        if (photoUri != null)
                        {
                            try {
                                String[] filePathColumn = {MediaStore.Images.Media.DATA};
                                String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
                                int orientation = -1;
                                Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
                                cursor.moveToFirst();
                                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                                String filePath = cursor.getString(columnIndex);
                                cursor.close();
                                cursor = getContentResolver().query(photoUri, orientationColumn, null, null, null);
                                if(cursor != null && cursor.moveToFirst()){
                                    orientation = cursor.getInt(cursor.getColumnIndex(orientationColumn[0]));
                                }
                                cursor.close();

                                HashMap<String, Integer> pRes = this.getImageResolutionSetting();
                                Bitmap shrunkenBitmap = FileUtilsHelper.shrinkBitmap(filePath, pRes.get("width"), pRes.get("height"));
                                shrunkenBitmap = rotateBitmapToOrientation(shrunkenBitmap, orientation);
                                String res = FileUtilsHelper.saveBitmapAsJpeg(shrunkenBitmap, this);
                                Log.d(TAG,"File Path: " + res);
                                shrunkenBitmap.recycle();
                                Intent editImage = new Intent(this, EditImage.class);
                                editImage.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
                                editImage.putExtra("stuff.path", res);

                                startActivity(editImage);
                            }catch(Exception e){
                                Toast.makeText(this, R.string.cant_save_image,Toast.LENGTH_SHORT).show();

                            }

                        }

                }
            }
            break;
            }
}}

I don´t know what i´m doing wrong...

I could really need a teacher on that :)

Thx for your help dudes!!

© Stack Overflow or respective owner

Related posts about image

Related posts about matrix