2016-03-04 79 views
0

我有一個位圖從相機,調整大小後,它改變爲水平,我需要旋轉90度,但大多數the sample都使用矩陣來旋轉,但是當我新的矩陣,它表示矩陣已過時,比我嘗試用帆布,下面this,第一次使用它,試圖弄明白,但不能轉動它,應用程序崩潰,請幫助如何通過畫布旋轉位圖

代碼

resizePhoto = BitmapFactory.decodeFile(imageLocation,bmOption); 

// R o t a t e B i t m a p 90 degree 

    Canvas canvas = new Canvas(resizePhoto); 
    canvas.rotate(90); 
    canvas.drawBitmap(resizePhoto , null ,null); 
+0

矩陣不會被棄用,據我所知'012BGmap(resizePhoto,null,null); – Bhargav

+0

;'你正在使用null'Matrix'導致崩潰 – pskink

+0

@Bhargav http://developer.android.com/ intl/zh-tw/reference/android/opengl/Matrix.html –

回答

1
Matrix matrix = new Matrix(); 
matrix.setRotate(angle, imageCenterX, imageCenterY); 
yourCanvas.drawBitmap(yourBitmap, matrix, null); 
+0

謝謝!我是noob,我混淆了android.graphics.Matrix,而不是android.opengl.Matrix –

+0

它發生。不要打擾你自己。我們都在不斷學習! – Hazonko

+0

確保您使用畫布上的不同位圖。這會導致你的崩潰。 – Simon

0

您可能想要使用傳遞到Bitmap.createBitmap的矩陣進行旋轉。它應該比使用Canvas更快。

Matrix matrix = new Matrix(); 
matrix.setRotate(angle); 
Bitmap resizePhoto = BitmapFactory.decodeFile(imageLocation, bmOption); 
Bitmap rotatedPhoto = Bitmap.createBitmap(resizePhoto, 0, 0, 
    resizePhoto.getWidth(), resizePhoto.getHeight(), matrix, true); 
resizePhoto.recycle(); 

您可能需要交換getWidth()getHeight()圍繞一個確切的90度旋轉。我忘了。