1. 程式人生 > >java Graphics2D繪製文字並居中並解決伺服器亂碼問題

java Graphics2D繪製文字並居中並解決伺服器亂碼問題

此 Graphics2D 類擴充套件 Graphics 類,以提供對幾何形狀、座標轉換、顏色管理和文字佈局更為複雜的控制。它是用於在 Java(tm) 平臺上呈現二維形狀、文字和影象的基礎類。

一、在圖片上繪製文字

例項程式碼:

package com.test.testImage;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image
.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Graphics2DTest { public static void main(String[] args) { try { String text = "文字居中"; int width = 500; int height = 400; // 建立BufferedImage物件 BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE
_INT_RGB); // 獲取Graphics2D Graphics2D g2d = image.createGraphics(); // 畫圖 g2d.setBackground(new Color(255,255,255)); //g2d.setPaint(new Color(0,0,0)); g2d.setColor(Color.red); g2d.clearRect(0, 0, width, height); Font font=new Font("宋體"
,Font.PLAIN,64); g2d.setFont(font); // 抗鋸齒 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 計算文字長度,計算居中的x點座標 FontMetrics fm = g2d.getFontMetrics(font); int textWidth = fm.stringWidth(text); int widthX = (width - textWidth) / 2; // 表示這段文字在圖片上的位置(x,y) .第一個是你設定的內容。 g2d.drawString(text,widthX,100); // 釋放物件 g2d.dispose(); // 儲存檔案 ImageIO.write(image, "jpg", new File("D:/test.jpg")); } catch(Exception ex) { ex.printStackTrace(); } } }

二、解決伺服器部署圖片文字亂碼問題

在Windows系統上,文字顯示正常,當專案部署到Linux系統上時,中文全部變成了口口口這種方框。我們使用的文字是Font font=new Font(“宋體”,Font.PLAIN,64);。出現的原因是因為在Linux上沒有中文宋體或者沒有中文其他文字的字型庫,需要我們匯入。
(1)查詢Windows系統(本地)的文字包

查詢路勁C:\Windows\Fonts
這裡寫圖片描述

本地是一個ttc檔案,我們需要修改檔案字尾,改為ttf。
這裡寫圖片描述

(2)將ttf檔案匯入到linux系統java的fonts包中。
這裡寫圖片描述
注:路徑是你Linux系統java安裝的檔案,根據你的安裝目錄查詢

(3)重啟java或者tomcat生效

參考文章: