Linux環境下BufferedImage Graphics drawString 中文亂碼解決方法

在linux環境下的,生成的帶文字的圖片在前臺一直顯示爲方框亂碼,windows環境正常。java

 

img.setFont(new Font("宋體", Font.BOLD, 20));linux

寫中文進入圖片以前必須設置字體,並且這個字體必須支持中文,不然就會出現亂碼或者方框、問號等等。windows

 

BufferedImage在內存建立的圖像調用的是服務器端的字體,因此在img.drawString(str, x, y);時,若是服務器端找不到對應的中文字體,那麼它就識別不了,最後寫入圖片的中文就變成了亂碼、方框、問號等等了。服務器

在這裏能夠有兩種方法添加服務器端的中文支持:jvm

第一種方法,添加系統中文字體(宋體):
root@dragon-virtual-machine:~# cd /usr/share/fonts
root@dragon-virtual-machine:/usr/share/fonts# mkdir winFonts
root@dragon-virtual-machine:/usr/share/fonts# cp /home/dragon/Desktop/simsun.ttc winFonts
root@dragon-virtual-machine:/usr/share/fonts# cd winFonts
root@dragon-virtual-machine:/usr/share/fonts/winFonts# mkfontdir
root@dragon-virtual-machine:/usr/share/fonts/winFonts# mkfontscale
第二種方法,添加jre中文字體(宋體):
root@dragon-virtual-machine:~# cd /usr/lib/jvm/java-6-sun/jre/lib/fonts
root@dragon-virtual-machine:/usr/lib/jvm/java-6-sun/jre/lib/fonts# cp /home/dragon/Desktop/simsun.ttc .字體

修改完必須重啓服務器纔有效。圖片

相關文章
相關標籤/搜索