首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java操作字体生成png图片,该怎么解决

2013-09-28 
java操作字体生成png图片java生成png图片,前提不能固定图片大小,根据文字和文字字号 自动生成png图片。网上

java操作字体生成png图片
java生成png图片,前提不能固定图片大小,根据文字和文字字号 自动生成png图片。
网上找了一些方法都是需要固定图片大小然后生成图片的。有没有办法解决自动生成文字png图片的。图片实例如:
java操作字体生成png图片,该怎么解决
要求:随便输入文字,选择字体、字号、颜色等信息生成png图片。
各位大侠有做过类似例子吗?请赐教实例,谢谢 java操作字体png?不固定图片大小
[解决办法]
这可以自己写,很容易实现。根据字体和字号以及需要输出的字符串可以获取图片需要的大小。
使用FontMetrica对象可以获取图片需要的高度和宽度。
[解决办法]

引用:
生成验证码  前提是固定图片大小。各位能看明白我说的吧。最好给出例子,百度、google搜索谁都知道。

要根据Font和传入的字符串生成图片只要得到此font应用到String的width和height就可以了

public static void main(String[] args) throws Exception {
createImage("中华人民共和国",new Font("宋体",Font.BOLD,18),new File("e:/a.png"));
createImage("中华人民",new Font("黑体",Font.BOLD,30),new File("e:/a1.png"));
createImage("中华人民共和国",new Font("黑体",Font.PLAIN,24),new File("e:/a2.png"));
}
//根据str,font的样式以及输出文件目录
public static void createImage(String str,Font font,File outFile) throws Exception{
//获取font的样式应用在str上的整个矩形
  Rectangle2D r=font.getStringBounds(str, new FontRenderContext(AffineTransform.getScaleInstance(1, 1),false,false));
  int unitHeight=(int)Math.floor(r.getHeight());//获取单个字符的高度
//获取整个str用了font样式的宽度这里用四舍五入后+1保证宽度绝对能容纳这个字符串作为图片的宽度
  int width=(int)Math.round(r.getWidth())+1;
  int height=unitHeight+3;//把单个字符的高度+3保证高度绝对能容纳字符串作为图片的高度
//创建图片
  BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
  Graphics g=image.getGraphics();
  g.setColor(Color.WHITE);
  g.fillRect(0, 0, width, height);//先用白色填充整张图片,也就是背景
  g.setColor(Color.black);//在换成黑色
  g.setFont(font);//设置画笔字体
  g.drawString(str, 0, font.getSize());//画出字符串
  g.dispose();
  ImageIO.write(image, "png", outFile);//输出png图片
}

热点排行