Java圖片添加中文水印無法正常顯示


問題:

  因業務需要,需要在圖片上生成中文水印然后輸出圖片。一開在window啪啪的敲了一會,so easy。當發布到Linux系統中的docker的時候,這時候中文字體都變成了一個個白框。無法正常顯示。

原因:

  在使用Graphics2D時,設置的字體,在該系統中無法識別該字體,或者是不支持中文字體。

解決過程:

  1、一開始以為直接在Linux系統中沒有安裝字體,然后就

    執行安裝字體命令:

      yum -y install fontconfig

    查看linux已安裝字體:

      fc-list

    查看linux已安裝中文字體:

      fc-list :lang=zh

  此時是執行fc-list :lang=zh查看是沒有中文字體的,然后再復制一些中文字體到服務器的/usr/share/fonts/目錄,接着清楚緩存,重新加載字體:fc-cache -vf。

  一番操作下來,fc-list :lang=zh可以查看到有支持的中文字體了。此時心中是一番激動,高興的以為搞定了,一測試懵逼。還是一堆框框。

  2、開始第二輪的研究,每個docker都是一個單獨的離線環境,嘗試把字體拷貝到容器環境所在的系統字體目錄(注意:要把字體放到和DockerFile同一目錄下)。

    然后在DockerFile中加入命令:

      COPY msyh.ttc /usr/share/fonts/msyh.ttc

    但是沒有效果。

  可能是docker中沒有安裝字體,然后進入docker中執行fc-list查看,該命令未被識別。說明是docker 中未安裝字體。

    然后在DockerFile中加入命令:

      RUN yum -y install fontconfig

      COPY ./fonts /usr/share/fonts

      RUN yum -y install ttmkfdir && ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir && fc-cache

    但是在生成鏡像的時候錯誤,此錯誤就不在這里說明了。說明還是行不通。

  3、把需要用到的字體拷貝到jvm的字體庫目錄:

    然后在DockerFile中加入:

      COPY msyh.ttc /opt/jdk1.8.0_261/jre/lib/fonts/msyh.ttc

    然后啟動嘗試,中文可以正常顯示了。

    

 
        

        

 

 

    

 


免責聲明!

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



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