Линия за линией изображения качели - PullRequest
1 голос
/ 14 ноября 2011

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

InputStream openStream = url.openStream();

        DataInputStream dis = new DataInputStream(new BufferedInputStream(openStream));
        ByteArrayOutputStream os = new ByteArrayOutputStream();

         while ((s = dis.read(b)) != -1) {

            os.write(b , 0, s);

            support.firePropertyChange("stream", null, os);

        }

Таким образом, любой слушатель получает поток и создаетизображение следующим образом:

 if("stream".equals(evt.getPropertyName())){
        try {
            ByteArrayOutputStream stream = (ByteArrayOutputStream) evt.getNewValue();
            byte[] byteArray = stream.toByteArray();
            stream.flush();
            Image createImage = Toolkit.getDefaultToolkit().createImage(byteArray);

            this.getContentPane().add(new JLabel(new ImageIcon(createImage)));

       } catch (IOException ex) {
            Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Однако я получаю сообщение об ошибке «Преждевременный конец файла JPEG sun.awt.image.ImageFormatException: поток данных JPEG не содержит изображения», изображение в формате JPG, есть ли какая-нибудь библиотека или метод, который может сделать что-то похожее?

1 Ответ

0 голосов
/ 15 ноября 2011

Это зависит от декодера изображения, но вы можете попробовать ImageObserver. Есть пример в Загрузка изображения отслеживания: MediaTracker и ImageObserver.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...