Отправка изображения через сокет с Python на Android

В настоящее время у меня есть сервер сокетов Python, который захватывает с веб-камеры с помощью opencv. Я преобразовал захваченное изображение с помощью image.tostring ();

Я пытаюсь отправить это изображение в приложение для Android и открыть его в веб-просмотре. Я могу открыть текстовую строку, но не могу вернуть ее в изображение.

Это единственный способ получить что-нибудь для отображения в веб-представлении:

webv.loadData(html, "text/html", "utf-8");

Данные передаются на устройство Android, поэтому я знаю, что сокет работает нормально, я просто не могу понять перевод.

Какие-либо предложения?

ИЗМЕНИТЬ на основе комментариев ниже:

В порядке. Итак, я преобразовал строку в base64 в python перед ее отправкой.

Я попытался использовать bitmapfactory, чтобы добавить изображение в ImageView, используя:

byte[] decodedString = Base64.decode(result, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

но я получаю сообщение об ошибке SkImageDecoder :: Factory вернул null

Я также попробовал просмотреть в Интернете следующее, что дает мне значок сломанного изображения

String html = "<img src=\"data:image/jpeg;base64,"+result+"\" />";
webv.loadData(html, "text/html", "utf-8");

Это дает мне пустой веб-просмотр

String html = "<img src=\"data:image/jpeg;base64,"+result+"\" />";
webv.loadData(html, "iamge/jpeg", "base64");

String html = "<img src=\"data:image/jpeg;base64,"+result+"\" />";
webv.loadData(html, "text/html", "base64");

webv.loadData(result, "image/jpeg","base64");

Похоже, проблема в моем коде на Python, так как строка base64, экспортированная в текстовый файл, не может быть преобразована в изображение, она "содержит ошибки" в соответствующих фрагментах кода:

img = cv.QueryFrame(cam)
imgstr = base64.b64encode(img.tostring())

conn = s.accept()
conn.send(imgstr)

person saniel    schedule 03.05.2013    source источник
comment
Две вещи, которые можно попробовать: сохранить полезную нагрузку на свое устройство, а затем проверить ее с помощью gdb. Я подозреваю, что файл поврежден. Если это так, base64 закодирует строку и затем отправит ее на устройство (developer.android .com / reference / android / util / Base64.html).   -  person David    schedule 03.05.2013
comment
Спасибо! внес некоторые правки в исходный вопрос. Я раньше не использовал gdb. Я пытаюсь осознать это. @Дэйвид   -  person saniel    schedule 03.05.2013
comment
Подумайте об этом, вы идете прямо из cv.Image (). ToString () или вы преобразовываете это в jpeg перед отправкой? Прошло некоторое время, но я почти уверен, что формат cv.Image (). ToString () находится в формате BMP.   -  person David    schedule 03.05.2013
comment
Кроме того, я пропустил тип - я имел в виду ADB, а не GDB. В мосте отладки Android также есть утилита для извлечения файлов с устройства и их локализации, что может значительно упростить отладку.   -  person David    schedule 03.05.2013
comment
В порядке. Попробую ADB. Я пытаюсь понять, как преобразовать изображение cv в jpeg, потому что я думаю, что вы правы в этом.   -  person saniel    schedule 03.05.2013
comment
Преобразование из raw / bmp в jpg должно быть тривиальным, если у вас есть PIL или аналогичный доступный   -  person David    schedule 03.05.2013
comment
У меня возникли проблемы с поиском способа сделать это без сохранения файла на локальный диск.   -  person saniel    schedule 03.05.2013
comment
stackoverflow .com / questions / 646286 /   -  person David    schedule 03.05.2013
comment
Спасибо! получил это, но изображение все еще не отображается.   -  person saniel    schedule 04.05.2013
comment
Последняя идея от меня, сохраните jpg локально перед отправкой. Убедитесь, что он правильный. Затем сохраните jpg на Android, снимите его с помощью adb и убедитесь, что вы получили правильную полезную нагрузку.   -  person David    schedule 04.05.2013