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

发布时间:2021-11-12 17:25:24 作者:柒染
来源:亿速云 阅读:528

这篇文章将为大家详细讲解有关Graphics2D中写图片中文乱码问题及解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Graphics2D 写图片中文乱码

概述

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

问题原因&解决

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

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

查看服务器支持哪些字体

   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);
        Font 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替换一下就好。

关于Graphics2D中写图片中文乱码问题及解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 怎么解决java中sql中文语句乱码问题
  2. linux中文乱码问题的解决方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

graphics

上一篇:JavaScript中的运算符是什么样的

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》