在SWING中显示网络上动态生成的图片,
我起初直接用
ImageIcon ic = new ImageIcon(data);//data为网络直接读取来的byte数组
lblNewLabel_1.setIcon(ic);
lblNewLabel_1.repaint();
结果发现经常会遇到有些图片出不来,查了好半天,而且找错还真不好找,因为他不在具体的位置抛异常。抛了个根本找不到源的异常
后来仔细寻找,才发现,动态的图片数组格式有差异,有JPG,有PNG,也有BMP,结果发现BMP的显不出,而且有问题。
网上有BMP转JPG图片的代码,但那天只是文件及格式间转换,我还是不太想这样做。但从这代码里发现一个
image = Toolkit.getDefaultToolkit().createImage(
new MemoryImageSource(bh.iWidth, bh.iHeight, ndata, 0,
bh.iWidth));
因为Swing中ImageIcon好像构造方法是中可以为Image对象的,但Toolkit中createImage的ImageProducer这个参数又不知从何而来。
又发现 BufferImage bi=ImageIo.read(inputstream);
而bi.getSource()这个方法返回的对象就是ImageProducer。
似乎发现有办法解决。
于是,我写成下面这样就搞定了。
BufferedImage bi = ImageIO.read(new ByteArrayInputStream(image));
ImageIcon ic = new ImageIcon(Toolkit.getDefaultToolkit().createImage(bi.getSource()));
lblNewLabel_1.setIcon(ic);
lblNewLabel_1.repaint();
其次,我发现用httpclient中取的inputstream取图标的长度有问题。
我之前喜欢直接用byte data[]=new byte[is.available];is.read(data);
但发现这样不行,容易报错。
所以还是乖乖的这样用
InputStream is = entity.getContent();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len=-1;
while((len=is.read(buffer))!=-1){
baos.write(buffer, 0, len);
}
byte[] data = baos.toByteArray();
分享到:
相关推荐
用Java程序读取Excel表格里的内容并显示在Swing界面里。
java Swing读取图片,并以友好的方式呈现个使用者
Java Swing实现添加数据到数据库(数据库使用Mysql)并查询数据显示在界面中。
swing 开发 Linux和window系统解决乱码参考文档,个人总结,不喜勿碰
swing 中JTABLE中添加控件的例子 可以引申出添加很多控件
myeclipse java从mysql中读出数据,将读出的数据以表格显示至swing界面,界面清晰,适合初学者参考
Java中基于UDP的图像传输与显示(Swing界面) Java中基于UDP的图像传输与显示(Swing界面)
java swing GUI界面显示IE网页 根据网址跳转到相应网站
利用swing组件来显示系统文件的目录树,不使用JFileChooser类。
在Swing中显示Html网页 如有疑问和问题 建议 都可以发邮件 谢谢支持。 解压密码:www.panying520.cn
This is a sample swing program for study
java Swing 读取xml并导出Excel java Swing 读取xml并导出Excel
UNIX/Linux平台下JDK1.2中Swing的中文显示.pdf
使用Java的Swing组件编写的窗体类程序,用来显示系统当前的日期的时间,并随系统的变化而变化。
用swing 显示当前时间.利用了多线程和swing容器
JAVA 课程设计源码 五子棋 SWING 完整代码 人机 网络两种JAVA 课程设计源码 五子棋 SWING 完整代码 人机 网络两种JAVA 课程设计源码 五子棋 SWING 完整代码 人机 网络两种JAVA 课程设计源码 五子棋 SWING 完整代码 ...
一共有三层,页面,action和dao层,比较简单不分包了,直接放在在一个包里;还有一些封装,需要的就自己封装了,这个只是简单的展示; 使用的是Swing组件和io流; 使用上传功能获取路径(我这边的是直接指定的...
使用Java swing 技术读取.raw格式的图片文件并显示
该应用是演示怎样使用多线程来显示一个Swing应用的加载动画。主要是使用JProgressBar和Timer来实现。目的是让比较复杂的Swing应用启动时解决延迟的状态,以提供友好的使用感。 阅读对象:使用Swing开发应用的学员。
java swing 画图 直线 圆 四方形等 保存图像 , 以及截图的实现。详细代码,已经调试过