Я хочу показать изображение во время загрузки, у меня есть 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, есть ли какая-нибудь библиотека или метод, который может сделать что-то похожее?