Как читать изображения png из входного потока в java

Есть 2 приложения. Одно приложение действует как сервер и постоянно отправляет снимок экрана рабочего стола, используя следующий код.

Robot robot=new Robot();
OutputStream os;
BufferedImage image = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", os);

Второе приложение — это приложение для Android, которое действует как клиентское приложение и должно непрерывно считывать указанный выше поток изображений из входного потока.

Не могли бы вы помочь мне прочитать изображения png из потока ввода в клиентском приложении.

Спасибо и с уважением Мини.


person mini    schedule 04.07.2012    source источник
comment
ImageIO.read(InpusTream) тоже есть ;), вы можете писать (как и вы) и читать...   -  person Francisco Spaeth    schedule 04.07.2012
comment
stackoverflow.com/a/5312288/561543   -  person Don Ho    schedule 04.07.2012
comment
есть ли способ прочитать заголовок изображения png без использования пакета java.awt.* и javax.imageIo.* ?   -  person mini    schedule 05.07.2012


Ответы (2)


В клиентском приложении прочитайте InputStream с помощью метода Socket.getInputStream().

 BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
 BufferedImage image = ImageIO.read(in);
person kv-prajapati    schedule 04.07.2012
comment
Здесь я не использую пакет java.awt - person mini; 04.07.2012
comment
Поскольку ImageIO будет оборачивать поток в ImageInputStream, я сомневаюсь, что добавленный BufferedInputStream будет очень полезен. - person MvG; 04.07.2012
comment
Поток приложения зависает в этой строке BufferedInputStream in = new BufferedInputStream(socket.getInputStream()); Поскольку сервер постоянно отправляет поток изображений клиенту. - person mini; 04.07.2012

Android SDK не поддерживает метод ImageIO.read(). Даже если вы сможете скомпилировать свой код, ваше приложение для Android выйдет из строя и будет иметь ошибку об отсутствующих библиотеках, например:

не удалось найти метод javax.imageio.imageio.read

Я предлагаю использовать растровое изображение вместо этого...

person 0014    schedule 08.12.2014