2016-03-04 5 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

матрица не устарела, насколько я знаю – Bhargav

+0

в 'drawBitmap (resizePhoto, null, null);' вы используете 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 градусов. Я забыл.

Смежные вопросы