0

I am developing a camera app. Picture is being successfully taken and saved. The issue is saved image appeared rotated when viewed. I came across several examples on internet to rotate the saved image. My code is as follows:

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {



        Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data 

        .length);

            try {

                ContentValues v = new ContentValues();
                v.put(MediaStore.Images.Media.TITLE, 

                "test"+System.currentTimeMillis());
                v.put(MediaStore.Images.Media.DISPLAY_NAME, 

                "test"+System.currentTimeMillis());
                v.put(MediaStore.Images.Media.DESCRIPTION, "Test picture");
                v.put(MediaStore.Images.Media.DATE_ADDED, 

                 System.currentTimeMillis());
                v.put(MediaStore.Images.Media.DATE_TAKEN, 

                System.currentTimeMillis());
                v.put(MediaStore.Images.Media.DATE_MODIFIED, 

                System.currentTimeMillis());
                v.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
                v.put(MediaStore.Images.Media.ORIENTATION,90);
                Uri uriTarget = 



                getContentResolver().
                insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, v);
                String imagePath = getRealPathFromURI(uriTarget);
                ExifInterface ei = new ExifInterface(imagePath);
                int orientation = 

                ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, 

                ExifInterface.ORIENTATION_NORMAL);

                switch(orientation) {
                    case ExifInterface.ORIENTATION_ROTATE_90:
                       data= RotateBitmap(bitmap, 90);
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                       data= RotateBitmap(bitmap, 180);
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                       data= RotateBitmap(bitmap, 180);
                        break;

                    // etc.
                }
                OutputStream imageFileOS;
                imageFileOS = 


                getContentResolver().openOutputStream(uriTarget);

                imageFileOS.write(data);

                imageFileOS.flush();

                imageFileOS.close();

                Log.d("URI",uriTarget.toString());

            } catch (Exception e) {
                e.printStackTrace();
            }

            finally
            {
                camera.startPreview();
            }


    }
};

Here is the function to get path of saved image:

    public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(this, contentUri, proj, null,   

    null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = 

    cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

The issue is ExifInterface ei = new ExifInterface(imagePath); says E/JHEAD﹕ can't open '/storage/emulated/10/Pictures/1442234633142.jpg'

Check Full source code: https://github.com/SohaibFarooqi/CameraFilter/

AAA DDE
  • 27
  • 10

0 Answers0