JAVA使用外部字體將文字生成圖片,並使用FontMetrics居中文字


需求:

  1.用戶輸入文字,根據外部字體,將文字生成圖片

  2.輸出的文字需要居中在圖片中顯示

 

遇到的問題:

  1.如何導入外部字體?使用Java的Font類,所有的字體都是系統安裝過的

  2.每次用戶輸入的字符串長度,圖片的尺寸是可以改變的,如果做到每次計算出文字居中的x軸,y軸?

 

解決辦法:

  1.如何導入外部字體?使用Java的Font類,所有的字體都是系統安裝過的

import java.awt.Font;
import java.io.File;
import java.io.FileInputStream;

public class Loadfont
{
    public static Font loadFont(String fontFileName, float fontSize)  //第一個參數是外部字體名,第二個是字體大小
    {
        try
        {
            File file = new File(fontFileName);
            FileInputStream aixing = new FileInputStream(file);
            Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, aixing);
            Font dynamicFontPt = dynamicFont.deriveFont(fontSize);
            aixing.close();
            return dynamicFontPt;
        }
        catch(Exception e)//異常處理
        {
            e.printStackTrace();
            return new java.awt.Font("宋體", Font.PLAIN, 14);
        }
    }
    
    
    public static java.awt.Font Font(){
        String root=System.getProperty("user.dir");//項目根目錄路徑
        Font font = Loadfont.loadFont(root+"/data/PRISTINA.ttf", 18f);//調用
        return font;//返回字體
    }
    
    public static java.awt.Font Font2(){
        String root=System.getProperty("user.dir");//項目根目錄路徑
        Font font = Loadfont.loadFont(root+"/data/XXXX.ttf", 18f);
        return font;//返回字體
    }
}

 

  2.每次用戶輸入的字符串長度,圖片的尺寸是可以改變的,如果做到每次計算出文字居中的x軸,y軸?

    [使用FontMetrics類]

   FontMetrics類的使用請參考:http://mikewang.blog.51cto.com/3826268/871765

/**獲取起始x軸*/
int strLen = fm.stringWidth(str);
int x = (width - strLen)/2;

/** 用於獲得垂直居中y */
Rectangle clip = g.getClipBounds();
FontMetrics fm = g.getFontMetrics(font);
int ascent = fm.getAscent();
int descent = fm.getDescent();
int y = (clip.height - (ascent + descent)) / 2 + ascent;

 

  


免責聲明!

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



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