Android: преобразование изображения в byteArray - PullRequest
1 голос
/ 30 ноября 2010

В моем проекте у меня есть растровое изображение.Мне нужно преобразовать это изображение в byteArray, чтобы манипулировать некоторыми байтами, и после этого сохранить его как изображение.

с этим кодом image = BitmapFactory.decodeResource(context.getResources(), R.drawable.tasnim); У меня есть доступ к ширине и высоте, но как я могу получить доступ к байтамэто изображение?

Спасибо

Ответы [ 2 ]

3 голосов
/ 30 ноября 2010

AFAIK Самый правильный путь:

ByteBuffer copyToBuffer(Bitmap bitmap){
    int size = bitmap.getHeight() * bitmap.getRowBytes();
    ByteBuffer buffer = ByteBuffer.allocateDirect(size);
    bitmap.copyPixelsToBuffer(buffer);
    return buffer;
}
2 голосов
/ 30 ноября 2010

Я предполагаю, что ОП хочет манипулировать пикселями, а не информацией заголовка изображения ...

Предполагая, что image является Bitmap

int w = image.getWidth(), h = image.getHeight();
int[] rgbStream = new int[w * h];
image.getPixels(rgbStream, 0, w, 0, 0, w, h);

Конечно, вы получаете значения пикселей в виде целых чисел ... Но вы всегда можете преобразовать их снова.

    int t = w * h;

    for (int i = 0; i < t; i++) {
        pixel = rgbStream[i];  //get pixel value (ARGB)
        int A = (pixel >> 24) & 0xFF; //Isolate Alpha value...
        int R = (pixel >> 16) & 0xFF; //Isolate Red Channel value...
        int G = (pixel >> 8) & 0xFF; //Isolate Green Channel value...
        int B = pixel & 0xFF; //Isolate Blue Channel value...
                       //NOTE, A,R,G,B can be cast as bytes...


    }
...