Java給圖片添加水印部署到服務器出現中文亂碼


問題:使用java.awt包的Graphics2D進行操作,對每次上傳的圖片流都操作一次。在本地windows環境測試的非常流暢,字體的各種形式也能完整顯示,但是部署到linux服務器上就會出現中文字體變成口口口形式

原因:linux服務器器本身不帶中文字體,或者說是沒有字體的

解決:給linux服務器安裝字體庫

 

1. 查看服務器的字體庫

如果沒有安裝字體庫會出現:

如果已經安裝字體庫:

 

 

2. 安裝字體庫

輸入命令:

yum -y install fontconfig

如果安裝成功會提示:

 這時我們可以輸入命令:

 cd /usr/share

輸入命令:

ls

可以看到在/usr/share目錄下有fonts和fontconfig目錄了:

3. 安裝中文字體庫

在linux服務器中我們字體的存放路徑是上圖中fonts目錄,我們需要做的就是將中文字體放到該目錄下。

首先在windows系統下打開c盤,進入Windows/Fonts目錄:

找到需要的字體,根據個人習慣copy到自己喜歡的位置

然后我們輸入命令:

cd /usr/share/fonts

進入到fonts目錄下,輸入mkdir chinese創建目錄:

mkdir chinese

進入chinese目錄:

cd chinese

將copy下來的字體放入該目錄下,可以利用rz命令存入,也可以使用xftp工具上傳

 

4. 權限命令操作

修改chinese目錄的權限:

chmod -R 755 /usr/share/fonts/chinese

接下來需要安裝ttmkfdir來搜索目錄中所有的字體信息,並匯總生成fonts.scale文件,輸入命令:

yum -y install ttmkfdir

當看到下圖的提示信息時說明已安裝成功:

當然,已經安裝過的就不需要輸入了

然后執行ttmkfdir命令即可:

ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

最后一步就是修改字體配置文件了,首先通過編輯器打開配置文件:

vi /etc/fonts/fonts.conf

可以看到一個Font list,即字體列表,在這里需要把我們添加的中文字體位置加進去:

  <dir>/usr/share/fonts/chinese</dir>

然后輸入:wq保存退出,最后別忘了刷新內存中的字體緩存,這樣就不用reboot重啟了:

fc-cache

最后再次通過fc-list看一下字體列表:

 

 

假如水印如有生僻字顯示不出來參考如下方法:

1)在$JAVA_HOME/jre/lib/fonts下新建一個fallback目錄,讓Java程序渲染生僻字時在fallback里面找。(JAVA_HOME是你jdk安裝的目錄)

2)把windows/fonts/simsun.ttc拷貝到fallback去

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM