sunfruit[请访问http://www.fruitres.cn]

--我相信JAVA能走得更远 QQ:316228067

JAVA在已有图片上面画图报错UnsupportedOperationException的解决办法

--sunfruit

  前一段时间写了一个[原创]JAVA中图片上叠加文字的方法,本来这方面的例子在网络上面很多,而且当时写的时候也没有遇到什么问题,所以也没有什么感觉要注意的地方
  昨天由于一些原因需要在一个已有的图片上面画点,然后再显示出来,感觉上和[原创]JAVA中图片上叠加文字的方法很类似,也就没当回事按照自己的思路就写了,很容易想到读取已存在的图片内容然后生成
  ImageIcon imageIcon=new ImageIcon(bytes);    对象然后生成
  Image image=imageIcon.getImage();    对象,这个时候只要是从image实例里面获得Graphics对象就可以对图片进行编辑了但是下面这步却报错了
  Graphics g =image.getGraphics(); //这步抱错:UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)
  怎么调试都不行,于是google一把,发现遇到这个问题的人不少,解决办法是不能从Image对象获得Graphics,而是要从BufferedImage对象获得Graphics,于是调整思路将代码修改为
  BufferedImage bufferedImage=new BufferedImage(imageIcon.getIconHeight(),imageIcon.getIconWidth(),BufferedImage.TYPE_INT_RGB);
  Graphics2D g=(Graphics2D)bufferedImage.getGraphics();这次测试通过可以获得Graphics对象了

  这里说明一点:Graphics g =image.getGraphics(); 这一步如果是从Java的图形组件里面获得的Image对象,然后获得Graphics对象就不会有问题
  在已有的图片上面画图的完整例子见:[原创]JAVA在已有图片上面画图的实例

posted on 2006-03-11 13:56 sunfruit 阅读(2119) 评论(0)  编辑  收藏 所属分类: JAVA SE & EE


只有注册用户登录后才能发表评论。


网站导航: