// 取得系统字体
public static TreeMap<String, String> getFonts() {
TreeMap<String, String> map = new TreeMap<String, String>();
Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAllFonts();
if (fonts == null || fonts.length < 1) {
return map;
}
for (int i = 0; i < fonts.length; i++) {
map.put(fonts[i].getFamily(), fonts[i].getFamily());// 获取字体
}
return map;
}
// 根据字符串、字体、字体颜色、字号生成透明图片
public static void drawImg3(String txtStr, String txtFont, int txtColor,
int txtSize) throws Exception {
Font font = new Font(txtFont, Font.PLAIN, txtSize);
JComponent j = new JLabel();
FontMetrics fm = j.getFontMetrics(font);
int width = fm.stringWidth(txtStr); // 字符串像素宽度
int height = fm.getHeight(); // 字符串像素高度
height *= 2; // 图片高度为文字的两倍高度
// 注意BufferedImage.TYPE_INT_ARGB 与 BufferedImage.TYPE_INT_RGB
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
// 若用RenderingHints.KEY_TEXT_ANTIALIASING
// 文本抗锯齿提示键;VALUE_TEXT_ANTIALIAS_ON 文本抗锯齿提示值——使用某种抗锯齿形式完成文本呈现。不能去掉锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON); // 去掉图片文字锯齿
g2d.setFont(font);
g2d.setColor(new Color(txtColor));
g2d.drawString(txtStr, 0, height / 2); // 本想生成与原字符串相同大小图片未实现,惭愧
// 图象生效
g2d.dispose();
image.flush();
// 生成到本地图片
ImageIO.write(image, "png", new File("f:/test/t3.png"));
}