0

私のアプリでは、次を呼び出してビットマップのすべての色を含む 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 配列を介した回転を行うことができるかどうか、またその方法が行列よりもメモリ効率が高いかどうか疑問に思っています。

ありがとう!

4

1 に答える 1

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);
    }
于 2013-07-05T09:47:52.347 に答える