Rotate image in android

I want to rotate the image both clockwise and counterclockwise. I tried, but did not rotate the image so, so plz give me a solution for my problem if you know ..

Thanks in Advance ................. ///

+7
source share
5 answers

Use the code below

public class Rotateimage extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); // or just load a resource from the res/drawable directory: Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.flo); // find the width and height of the screen: Display d = getWindowManager().getDefaultDisplay(); int x = d.getWidth(); int y = d.getHeight(); // get a reference to the ImageView component that will display the image: ImageView img1 = (ImageView)findViewById(R.id.imageView1); // scale it to fit the screen, x and y swapped because my image is wider than it is tall Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, y, x, true); // create a matrix object Matrix matrix = new Matrix(); matrix.postRotate(45, 90, 180); // create a new bitmap from the original using the matrix to transform the result Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap , 0, 0, scaledBitmap .getWidth(), scaledBitmap .getHeight(), matrix, true); // display the rotated bitmap img1.setImageBitmap(rotatedBitmap); }} 
+6
source

Here is the basic code to load a bitmap and rotate it left or right:

 // Load a bitmap from a drawable, make sure this drawable exists in your project Bitmap sprite = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher); // Create two matrices that will be used to rotate the bitmap Matrix rotateRight = new Matrix(); Matrix rotateLeft = new Matrix(); // Set the matrices with the desired rotation 90 or -90 degrees rotateRight.preRotate(90); rotateLeft.preRotate(-90); // Create bitmaps based on the loaded bitmap 'sprite' and apply one of // the rotation matrices Bitmap rSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), rotateRight, true); Bitmap lSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), rotateLeft, true); 

Now go and use rSprite and lSprite.

Here is the complete sample that actually draws bitmap images:

 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new drawView(this)); } private class drawView extends View{ public drawView(Context context){ super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // Load a bitmap from a drawable, make sure this drawable exists in your project Bitmap sprite = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher); // Create two matrices that will be used to rotate the bitmap Matrix rotateRight = new Matrix(); Matrix rotateLeft = new Matrix(); // Set the matrices with the desired rotation 90 or -90 degrees rotateRight.preRotate(90); rotateLeft.preRotate(-90); // Create bitmaps based on the loaded bitmap 'sprite' and apply one of // the rotation matrices Bitmap rSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), rotateRight, true); Bitmap lSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), rotateLeft, true); //Draw the first unrotated sprite at the top left of the screen canvas.drawBitmap(sprite, 0, 0, null); //Draw the rotated right sprite on the 2nd row canvas.drawBitmap(rSprite, 0, sprite.getHeight() + 5, null); //Draw the rotated left sprite on the 3rd row canvas.drawBitmap(lSprite, 0, sprite.getHeight() * 2 + 5, null); } } } 
+4
source

use this code, hope it will be useful ... you have to write this method to perform the rotation operation

 public void paintFromCenter(float angle, Canvas c) { Bitmap b = sprite; Bitmap h = b; Matrix matrix = new Matrix(); matrix.postRotate(angle, h.getWidth() / 2, h.getHeight()); matrix.postTranslate(getX(), getY()); // canvas.drawBitmap(bitmap, matrix, new Paint()); Bitmap bmp2 = Bitmap.createBitmap(h, 0, 0, frameWidth, frameHeight, matrix, true); c.drawBitmap(h, matrix, null); } 

in your program you have to write the onTouchEvent () method

 public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN) { edX = (int) event.getX(); edY = (int) event.getY(); if ((edX > objectSprite.getX() && edX < objectSprite.getX() + objectSprite.getWidth() && edY > objectSprite.getY() && edY < objectSprite.getY() + objectSprite.getHeight())) { } } if (action == MotionEvent.ACTION_MOVE) { emX = (int) event.getX(); emY = (int) event.getY(); if (edX < emX && angle <= 90) { update(canvas); CHAR = 'D'; } else if (edX > emX && angle > 0) { update(canvas); CHAR = 'U'; } if (edY < emY && angle <= 90) { update(canvas); CHAR = 'L'; } else if (edY > emY && angle >= 0) { update(canvas); CHAR = 'R'; } } return true; } 

and you need to create an update () method to rotate your angle by the angle of the touch event, which can be determined by your choice. I initially declare

 int angle=1; public void update(Canvas canvas) { switch (CHAR) { case 'D': angle += 1; break; case 'U': angle -= 1; break; case 'R': angle -= 1; break; case 'L': angle += 1; break; } } 

Now you need to draw your object in a draw () method like this

 public void draw() { objectSprite.paintFromCenter(angle, canvas); } 
0
source

You just add this simple code to your button

  imVCature_pic.setRotation(imVCature_pic.getRotation() + 90); 
0
source
 Matrix mat = new Matrix(); mat.preRotate(angle);///in degree Bitmap mBitmap = Bitmap.createBitmap(originalBmp, 0, 0, modWidth, modHeight, mat, true); //originalBmp -> original img as bitmap //modHeight -> new height //modWidth -> new width 

use the above code.

-one
source

All Articles