--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在已有图片上面画图的实例