java 图片上绘制文字Graphics2D linux 中文乱码

简介: java 图片上绘制文字Graphics2D linux 中文乱码

解决方式1:

windows上的字体拷贝到linux上。

解决方式2:

本地java读写字体。

网上时候还有这个问题,不过我还没遇到:

https://blog.csdn.net/weixin_34294809/article/details/114301980?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link

3.个人解决此问题的完整代码:

public InputStream createDistributorSharePosterInputstream(String bgOriginUrl, String wechatNickName, String wechatAvatarUrl, String wechatRecomQrcodeUrl) {
        try {
            BufferedImage bimg = getUrlByBufferedImage(bgOriginUrl);
//            String pathString = FontLoader.class.getResource("/font/msyhbd.ttf").getFile();
//            Font font2 = Font.createFont(Font.TRUETYPE_FONT, new File(pathString));
            Font  font1 = null;
            GraphicsEnvironment localGraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
//            if(localGraphicsEnvironment.getAvailableFontFamilyNames() == null ||  localGraphicsEnvironment.getAvailableFontFamilyNames().length == 0 ){
                Font font = Font.createFont(Font.TRUETYPE_FONT, ImageGenerateUtil.class.getResourceAsStream("/font/msyhbd.ttf"));
                font1 = font.deriveFont(Font.BOLD,24f);
                localGraphicsEnvironment.registerFont(font);
//            }else{
//                font1 = new Font(typeface, Font.BOLD, 24);
//            }
            // 开启画图
            Graphics2D g2d = localGraphicsEnvironment.createGraphics(bimg);
            // 抗锯齿
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            //用户头像
            BufferedImage userLogo = getSque(getUrlByBufferedImage(wechatAvatarUrl));
            g2d.drawImage(setRadius(userLogo, 3), 336, 1064, 80, 80, null);
            //用户昵称
//            Font  font1 = font.deriveFont(Font.BOLD,24f);
            g2d.setFont(font1);
            g2d.setColor(Color.WHITE);
            // 计算文字长度,计算居中的x点坐标
            drawString(wechatNickName, bimg, g2d, font1, 1174);
            //推荐语
//            font2 = new Font(typeface, Font.BOLD, 24);
            g2d.setFont(font1);
            g2d.setColor(Color.WHITE);
            drawString("邀请您成为飞碟推荐官", bimg, g2d, font1, 1202);
            //太阳码
            Image sunCodeUrlImage = getUrlByBufferedImage(wechatRecomQrcodeUrl);
            g2d.drawImage(sunCodeUrlImage, 604, 1258, 100, 100, null);
            // 释放对象
            g2d.dispose();
            return upload(bimg);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("goodsCard:{}", e.getMessage());
        }
        return null;
    }

相关文章
|
1月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
64 4
|
1月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
56 2
|
1月前
|
算法 Java Linux
java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不显示问题
这篇文章讨论了在Linux环境下使用Java Graphics2D合成图片时遇到的中文显示问题,并提供了解决方案,包括如何在Linux系统中添加中文字体库。
34 1
java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不显示问题
|
1月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
49 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
1月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
36 1
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
19 1
|
1月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
39 1
|
1月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
60 1
|
1月前
|
存储 算法 Java
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。
44 0
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题