Посмотрите эту ссылку на двоичный код ввода / вывода в python:
http://www.dabeaz.com/blog/2009/08/python-binary-io-handling .html
Исходя из этого, вы можете просто написать следующее для чтения из буфера (а не только файлов):
g = open("foo","rb")
q = Example()
g.readinto(q)
Для записи просто:
g.write(q)
То же самое для использования сокетов:
s.send(q)
и
s.recv_info(q)
Я провел некоторое тестирование с помощью pack / unpack и ctypes, и этот подход быстрее всего, за исключением прямой записи в C
в onActivityResult
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = context.getContentResolver().query(uri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(picturePath, MediaStore.Video.Thumbnails.MICRO_KIND);
проверьте это официальные документы