Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Rotate Bitmap

0.00/5 (No votes)
27 Aug 2013 2  
Rotate bitmap

Introduction

Today, I will guide a snippet code to create a new bitmap by rotating an original bitmap by using Canvas.

Besides that, if you want to cut bitmap, please refer to this tip. And if you want to combine many bitmaps into one, please refer to this tip.

Using the Code

To rotate bitmap by using canvas, focus on the function below:

public void drawBitmap (Bitmap bitmap, Matrix matrix, Paint paint) 

The main point to rotate is matrix, with method:

matrix.postRotate(angle, x, y);  
  • angle: the angle will be rotated
  • x,y: the coordinate of anchor point to rotate on

With the above explanation, to rotate bitmap with anchor point as center, anchor point will be (bitmap.width/2, bitmap.height/2).

private Bitmap rotateBitmap(float angle) {
 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
        R.drawable.original);
    Bitmap rotateBitmap = Bitmap.createBitmap(bitmap.getWidth(),
        bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(rotateBitmap);
    Matrix matrix = new Matrix();
    matrix.postRotate(angle, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
    canvas.drawBitmap(bitmap, matrix, null);
    return rotateBitmap;
}  

And rotate bitmap with anchor point is (left, top), anchor point will be (0, 0)

private Bitmap rotate(Bitmap bitmap, float angle) {
    Bitmap rotateBitmap = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(rotateBitmap);
    Matrix matrix = new Matrix();
    matrix.postRotate(angle, 0, 0);
    canvas.drawBitmap(bitmap, matrix, new Paint());
    return rotateBitmap;
}

History

  • 2013-08-27: Created
  • 2013-08-27: Updated to clear more about the anchor point, following the comment from users
  • 2013-08-28: Changed the link name to download source code

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here