2012-01-09 2 views
1

Я не очень хорош в Java, и мне нужно отправить BufferedImage через сокет TCP. Мне уже удалось установить соединение (и отправить строки), но я не мог точно узнать, какой Writer я должен использовать для отправки и восстановления BufferedImage.Java - перенос BufferedImage через TCP Socket

+2

Возможный дубликат [Отправка скриншота (bufferedImage) через сокет в java] (http://stackoverflow.com/questions/6973848/sending-a-screenshot-bufferedimage-over-a-socket-in-java) – Kiril

+0

Я не нашел этого во время поиска, спасибо! –

ответ

4

Вы должны ImageIO.write для сериализации изображения в виде байтового потока с использованием некоторого формата (PNG, JPG и т. Д.).

Затем вы должны отправить поток байтов по проводу. Трудность здесь в том, что вы не знаете размер потока вперед. Простым решением является сохранение всего содержимого в массив байтов в памяти (используйте ByteArrayOutputStream для него), а затем отправьте его. Или, если он не вписывается в память, вы должны сделать что-то умное (сохранить его во временный файл или использовать какой-то фрагментированный протокол или отправить уникальный знак терминатора).

+0

Пример кода будет gr8 – Arin

+0

@Arin Очень много вариантов, как это можно реализовать ... Таким образом, трудно найти окончательный образец. В большинстве ситуаций лучше не использовать raw TCP, а использовать, например, HTTP: http://stackoverflow.com/questions/2438375/how-to-convert-bufferedimage-to-image-to-display-on-jsp – kan

+0

@Arin Вот пример с памятью в памяти: http://stackoverflow.com/a/4944536/438742 – kan

Смежные вопросы