Skip to content Skip to sidebar Skip to footer

Android Rotate Bitmap 90 Degrees Results In Squashed Image. Need A True Rotate Between Portrait And Landscape

I am trying to rotate a bitmap image 90 degrees to change it from a landscape format to a portrait format. Example: [a, b, c, d] [e, f, g, h] [i, j, k, l] rotated 90 degree clockwi

Solution 1:

This is all you need to rotate the image:

Matrix matrix = new Matrix();
matrix.postRotate(90);
rotated = Bitmap.createBitmap(original, 0, 0, 
                              original.getWidth(), original.getHeight(), 
                              matrix, true);

In your code sample, you included a call to postScale. Could that be the reason your image is being stretched? Perhaps take that one out and do some more testing.


Solution 2:

Here's how you would rotate it properly (this insures proper rotation of the image)

public static Bitmap rotate(Bitmap b, int degrees) {
    if (degrees != 0 && b != null) {
        Matrix m = new Matrix();

        m.setRotate(degrees, (float) b.getWidth() / 2, (float) b.getHeight() / 2);
        try {
            Bitmap b2 = Bitmap.createBitmap(
                    b, 0, 0, b.getWidth(), b.getHeight(), m, true);
            if (b != b2) {
                b.recycle();
                b = b2;
            }
        } catch (OutOfMemoryError ex) {
           throw ex;
        }
    }
    return b;
}

Solution 3:

This code worked great for me:

                Matrix matrix = new Matrix();

            matrix.setRotate(90, 0, 0);
            matrix.postTranslate(original.getHeight(), 0);

            rotatedBitmap = Bitmap.createBitmap(newWidth, newHeight, original.getConfig());
            Canvas tmpCanvas = new Canvas(rotatedBitmap);
            tmpCanvas.drawBitmap(original, matrix, null);
            tmpCanvas.setBitmap(null);

Solution 4:

check the canvas size where you draw the bitmap, maybe your canvas is still landscape, so only the square part of the rotated bitmap could be seen.


Post a Comment for "Android Rotate Bitmap 90 Degrees Results In Squashed Image. Need A True Rotate Between Portrait And Landscape"