Преобразование массива int в растровое изображение на Android - PullRequest
10 голосов
/ 21 октября 2011

У меня есть массив MxN, представляющий цвета (скажем, в формате RGBA, но его легко изменить).Я хотел бы преобразовать их в растровое изображение MxN или что-то еще (например, текстуру OpenGL), которую я могу отобразить на экране.Есть ли быстрый способ сделать это?Циклическая обработка массива и вывод его на холст слишком медленный.

Ответы [ 3 ]

16 голосов
/ 21 октября 2011

Попробуйте, это даст вам точечный рисунок.

 // You are using RGBA that's why Config is ARGB.8888 
    bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
 // vector is your int[] of ARGB 
    bitmap.copyPixelsFromBuffer(IntBuffer.wrap(vector));

РЕДАКТИРОВАТЬ:

 //OR , you can generate IntBuffer from following native method
  /*private IntBuffer makeBuffer(int[] src, int n) {
        IntBuffer dst = IntBuffer.allocate(n*n);
        for (int i = 0; i < n; i++) {
            dst.put(src[i]);
        }
        dst.rewind();
        return dst;
    }*/

Надеюсь, это поможет вам.

10 голосов
/ 31 декабря 2012

Почему бы не использовать Bitmap.setPixel ?Это даже уровень API 1:

int[] array  = your array of pixels here...
int   width  = width of "array"...
int   height = height of "array"...

// Create bitmap
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

// Set the pixels
bitmap.setPixels(array, 0, width, 0, 0, width, height);

Вы можете играть со смещением / шагом / х / у по мере необходимости.
Без петель.Никаких дополнительных ассигнований.

3 голосов
/ 21 октября 2011

Да, похоже, у вас есть вся необходимая информация.Если M - это ширина, а N - это высота, вы можете создать новое растровое изображение с помощью Bitmap.createBitmap, и вы можете заполнить значения ARGB с помощью метода setPixels, который принимает массив int..createBitmap

Bitmap.setPixels

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...