Кодирование растрового изображения на base64 без сжатия исходного битового файла [дубликат]

Самое быстрое решение, которое я нашел (для большого списка в любом случае):

import numpy as np
#turn list into an array and flatten()
np.array(l).flatten()

Готово! Вы можете, конечно, включить его в список, выполнив список (l)

46
задан Asad Khan 17 April 2012 в 14:07
поделиться

3 ответа

Вы можете использовать copyPixelsToBuffer() , чтобы переместить пиксельные данные в Buffer, или вы можете использовать getPixels() , а затем преобразовать целые числа в байты с битом -shifting.

copyPixelsToBuffer(), вероятно, вы хотите использовать, так что вот пример того, как вы можете его использовать:

//b is the Bitmap

//calculate how many bytes our image consists of.
int bytes = b.getByteCount();
//or we can calculate bytes this way. Use a different value than 4 if you don't use 32bit images.
//int bytes = b.getWidth()*b.getHeight()*4; 

ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer
b.copyPixelsToBuffer(buffer); //Move the byte data to the buffer

byte[] array = buffer.array(); //Get the underlying array containing the data.
126
ответ дан petrnohejl 23 August 2018 в 23:56
поделиться

вместо следующей строки в ответе @jave:

int bytes = b.getByteCount();

Используйте следующую строку и функцию:

int bytes = byteSizeOf(b);

protected int byteSizeOf(Bitmap data) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {
    return data.getRowBytes() * data.getHeight();
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
    return data.getByteCount();
} else {
      return data.getAllocationByteCount();
}
6
ответ дан Chandresh Kachariya 23 August 2018 в 23:56
поделиться
BitmapCompat.getAllocationByteCount(bitmap);

полезно найти требуемый размер ByteBuffer

3
ответ дан Jobin Jacob Kavalam 23 August 2018 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: