--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在已有圖片上面畫圖的實例