#java #android #binary
#java #Android #двоичный
Вопрос:
У меня налажена связь с сокетом.
Теперь мне нужна помощь со следующим:
Мы собираемся отправить изображение на устройство через сокет.
transmit.framebuffer.rgb_byte will transmit in binary format the following information:
[4 bytes] => image width
[4 bytes] => image height
[< image width> * <image height> * 3 bytes] => RGB in unsigned char format [0, 255]
[3 bytes] "OKn"
Как бы мне заставить это работать?..
На данный момент я просто работал с обычным текстом и т.д.,
итак, все это двоичное кодирование для меня ново.
Комментарии:
1. В чем проблема? Используйте (буферизованный) входной поток /(Buffered)OutputStream и запишите байты.
Ответ №1:
Это пример того, как вы могли бы читать данные на стороне клиента:
out = new ByteArrayOutputStream();
in = new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE);
byte[] dataBuffer = new byte[1024 * 16];
int size = 0;
while ((size = in.read(dataBuffer)) != -1) {
out.write(dataBuffer, 0, size);
}
out.flush();
byte[] bytesReceived = out.toByteArray();
Комментарии:
1. Спасибо. просто нужно разобраться в этом. Как я могу продолжить вставлять захваченные данные в picturebox?
2. Я должен сказать, что кое-что звучит странно. Почему сервер не отправляет изображение в допустимом формате изображения? Например, png или jpg. Тогда было бы намного проще отобразить изображение.
3. Похоже, вместо этого вы могли бы преобразовать byte[] в массив целых чисел (где вам нужно ИЛИ и сдвинуть 3 байта в одно целое число), а затем использовать developer.android.com/reference/android/graphics /… , int, int, android.графика. Bitmap.Config)
4. Я не могу ответить на ваш вопрос о том, почему, потому что я не пишу эту его часть.. Я мог бы подумать — попросить другое решение после того, как я попробовал это. Я знаю, что система может сохранять в виде файла png, было бы проще каким-то образом отправить сам файл? Спасибо за помощь и пояснения на данный момент.
5. Было бы лучше использовать стандартный формат изображения вместо вашего собственного. Вы могли бы использовать существующий API с надежным, оптимизированным и практически не содержащим ошибок кодом. Но, похоже, это какой-то проект или домашнее задание, так что, возможно, причина просто в том, чтобы заставить вас узнать, как можно хранить изображение в двоичном формате.