Передача анимированного GIF через сокет

Я работал над проектом, в котором мне нужно передать GIF в апплет с сервера через сокет TCP. Проблема в том, что когда я передаю изображение, оно становится статичным (отображается последний кадр).

Я попытался передать (ICON), где я загрузил изображение на стороне сервера, но результат тот же.

Итак, есть ли какой-нибудь класс для чтения анимированного gif, чтобы я мог передать его с помощью ObjectOutputStream? или как-то иначе?

Сторона сервера:

ImageIcon icon = new ImageIcon("D:\\Data Files\\simu.gif");
Mat_out.writeObject(icon);

Сторона клиента:

ImageIcon icon = (ImageIcon) Mat_in.readObject();
jLabel2.setIcon(icon);

person Ali Zein    schedule 09.09.2012    source источник


Ответы (1)


  1. Используйте один из createImage(..) методов инструментария методы инструментария для загрузки изображения, но..
  2. Добавьте MediaTracker, чтобы убедиться, что все изображение загружается перед его передачей. (Это также может работать для изображения, возвращенного из ImageIcon, но зачем создавать компонент графического интерфейса, который не нужен?)

Поочередно загрузите все byte[] изображения, используя метод блокировки, и предоставьте его createImage(byte[]).

person Andrew Thompson    schedule 10.09.2012
comment
Работают ли методы createImage() с анимированными изображениями? поскольку классы BufferedImage и ImageIO не поддерживают анимированные и возвращают статическое (последний кадр) изображение. - person Ali Zein; 10.09.2012
comment
Большое спасибо .. Я попробовал второй вариант, и он работает! :)) - person Ali Zein; 10.09.2012
comment
Рад, что ты разобрался. :) Что касается кадров анимации, см. Показать анимированный фоновый рисунок в Swing для получения дополнительной информации. Детали. - person Andrew Thompson; 10.09.2012