Search code examples
javaandroidbitmapandroid-image

Rotate a saved bitmap in android


I am saving an image from the camera that was in landscape mode. so it gets saved in landscape mode and then i apply an overlay onto it that too is in landscape mode. I want to rotate that image and then save. e.g. if i have this

enter image description here

I want to rotate clockwise by 90 degrees once and make it this and save it to sdcard:

enter image description here

How is this to be accomplished?


Solution

  • void rotate(float x)
        {
            Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.tedd);
    
            int width = bitmapOrg.getWidth();
    
            int height = bitmapOrg.getHeight();
    
    
            int newWidth = 200;
    
            int newHeight  = 200;
    
            // calculate the scale - in this case = 0.4f
    
             float scaleWidth = ((float) newWidth) / width;
    
             float scaleHeight = ((float) newHeight) / height;
    
             Matrix matrix = new Matrix();
    
             matrix.postScale(scaleWidth, scaleHeight);
             matrix.postRotate(x);
    
             Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,width, height, matrix, true);
    
             iv.setScaleType(ScaleType.CENTER);
             iv.setImageBitmap(resizedBitmap);
        }