使用数组旋转位图

时间:2013-07-05 09:40:43

标签: java android bitmap out-of-memory pixels

在我的应用程序中,我有一个int数组,它通过调用bitmap.getPixels(intArr....)

包含我的位图的所有颜色

我想要一种将此图像旋转90度的方法。我知道这可以用矩阵和画布完成,但我也听说过这种方式非常低效。像这个例子:

Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, config);
Canvas canvas = new Canvas(targetBitmap);
Matrix matrix = new Matrix();
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2);
canvas.drawBitmap(source, matrix, new Paint());

我想知道是否/如何通过int数组进行旋转,通过循环遍历数组中的所有元素并应用某种算法,以及这是否比矩阵更有效。

谢谢!

1 个答案:

答案 0 :(得分:1)

可以不使用画布旋转

 public static Bitmap rotate(Bitmap src, float degree) {
        // create new matrix
        Matrix matrix = new Matrix();
        // setup rotation degree
        matrix.postRotate(degree);

        // return new bitmap rotated using matrix
        return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
    }