вращение и масштабирование изображения в Android с использованием матрицы - PullRequest
1 голос
/ 24 марта 2011

Я пытаюсь повернуть, а затем масштабировать изображение с помощью android.graphics.Matrix.Код выглядит следующим образом:

    int width = bmp1.getWidth();
    int height = bmp1.getHeight();
    int smallerVal = (height > width) ? width : height;
    int n = 0;
    while (smallerVal > 1)
    {
        smallerVal = smallerVal >> 1;
        n++;
    }

    int pow2 = (int) Math.pow(2, n);
    float scaleWidth = ((float) AppBase.width) / (float)pow2;
    float scaleHeight = ((float) AppBase.height) / (float)pow2;

    Matrix matrix = new Matrix();
    matrix.postRotate(90);
    matrix.postScale(scaleWidth, scaleHeight);
    Bitmap bmp2 = Bitmap.createBitmap(bmp1, 0, 0, pow2, pow2, matrix, true);

pow2 - получить квадратное изображение степени 2 для наложения текстуры.bmp2, как оказалось, имеет -1 в качестве высоты и ширины, то есть недопустимое изображение.Я что-то упустил?

Спасибо,
Раджат

1 Ответ

1 голос
/ 29 марта 2011

Решение, которое я использую для своей проблемы, приведено ниже, на случай, если кому-то понадобится в будущем.

            int pow2 = getSquareVal(bmp1);
            int width = bmp1.getWidth();
            int height = bmp1.getHeight();
            float scaleWidth = ((float) pow2) / (float)width;
            float scaleHeight = ((float) pow2) / (float)height;

            Matrix matrix = new Matrix();
            matrix.reset();

            matrix.postScale(scaleWidth, scaleHeight);
            if (width > height)
                matrix.postRotate(90);

            bmp2 = Bitmap.createBitmap(bmp1, 0, 0, width, height, matrix, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...