Graphics2D 写图片中文乱码问题及解决

网友投稿 305 2022-11-23

Graphics2D 写图片中文乱码问题及解决

目录Graphics2D 写图片中文乱码概述问题原因&解决Graphics2D 显示文字时乱码

Graphics2D 写图片中文乱码

概述

由于工作的需求,需要往图片写字,写中文的时候出现了乱码,网上找了很多资料都不行,后来自己不断尝试,最终发现由于Font 的name设置问题导致的乱码。

问题原因&解决

字形类Font用于规范组件所使用的字形大小、样式和字体等。其构造函数:

public Font(String name,iDZLsFOaliNnt style,int size);

name表示本地可获取字体名称

style表示字体样式,包含Font.PLAIN,Font.BOLD,Font.ITALIC三种,分别对应平体、加粗和斜体。 可见Font name不能随便设置

查看服务器支持哪些字体

GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fa=ge.getAvailableFontFamilyNames();

for (String s:fa) {

System.out.println(s);

}

如果服务器不存在想要的字体,通过网上下载或者其他系统拷贝(例如 宋体字体文件simsun.ttc simsun.ttf)将其通过ftp上传到服务器并拷贝到/usr/local/jdk/jre/lib/fonts/ 目录下(jdk 安装目录 ),然后重启下java进程即可。

测试代码

BufferedImage buffImg = ImageIO.read(new File("/tmp/1.jpg"));

Graphics2D g = buffImg.createGraphics();

g.setColor(Color.BLACK);

Fhttp://ont f = new Font("宋体",Font.PLAIN, 30);

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g.setFont(f);

FontMetrics fm = g.getFontMetrics(f);

g.drawString("中31国", 100, 100);

ImageIO.write(buffImg, FORMAT, new File("/tmp/test.jpg"));

Graphics2D 显示文字时乱码

Graphics2D 显示文字时乱码,一种方案是在服务器上添加字体

一种是,把汉字转为unicode

在数据库中存的是 \u6388\u6743\u7b7e\u540d\uff1a这个样的文字

在页面上还是显示 \u6388\u6743\u7b7e\u540d\uff1a显然是java给转义了

String s = "\u5ba2\u6237\u7b7e\u5b57\uff1a";

String str = s.replaceAll("\\\\", "");

现在用 replalaceAll替换一下就好。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:hadoop(角色)各个组件配置信息
下一篇:小米上架威刚SE800移动SSD,读取速度可达1000MB/s
相关文章

 发表评论

暂时没有评论,来抢沙发吧~