我想在下载时显示图片,我有网址,而我正在尝试获取这样的图片部分:
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图像格式,是否有任何已知的类库或方法可以做类似的事情?
答案 0 :(得分:0)
这取决于图像解码器,但您可以尝试ImageObserver
。 Tracking Image Loading: MediaTracker
and ImageObserver
中有一个例子。