FileChannel channel = escPosEmulator.randomAccessFile.getChannel();
MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_WRITE, buf.getRowBytes()* escPosEmulator.output_height , buf.getRowBytes()*height);
buf.copyPixelsToBuffer(map);
escPosEmulator.output_height += buf.getHeight();
Есть у меня эмулятор. После того как он обработал команды и отрисовал буфер строки, я его сохраняю в файл.
Когда обработка завершена
if (escPosEmulator.output_height > 0) {
Bitmap out = Bitmap.createBitmap(escPosEmulator.max_dots, escPosEmulator.output_height, Bitmap.Config.ARGB_8888);
FileChannel channel = escPosEmulator.randomAccessFile.getChannel();
MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_WRITE, 0, out.getRowBytes() * out.getHeight());
out.copyPixelsFromBuffer(map);
channel.close();
}
получаю картинку обратно в память.
В результате я работаю обычно с 32 пикселями в высоту.
Суммарную высоту программно ограничил в 32 тысячи пикселей. А то потом штатные просмотровщики виснут.
Это нативные функции java под андроидом. Поищите аналоги сишарпа для прямой работы с файлом и байтовым представлением битмапа .