本机 Windows 环境测试以下代码生成中文水印完全没问题,但是发布到Linux下不显示,一开始以为是报错了没打印出来,搜索发现直接提示中文乱码的或者不显示的,才明白原来是字体库原因,于是开始解决这个问题。

/***@paramsrcImgPath 源图片路径

*@paramtarImgPath 保存的图片路径

*@paramwaterMarkContent 文字内容

*@parammarkContentColor 文字颜色

*@paramfont 字体*/

public static void addLetterXY(String srcImgPath, String tarImgPath, String content,Color color,Font font, int x,inty) {try{//读取原图片信息

File srcImgFile = new File(srcImgPath);//得到原图片

Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片

int srcImgWidth = srcImg.getWidth(null);//获取图片的宽

int srcImgHeight = srcImg.getHeight(null);//获取图片的高//加文字

BufferedImage bufImg = newBufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g=bufImg.createGraphics();

g.drawImage(srcImg,0, 0, srcImgWidth, srcImgHeight, null);

g.setColor(color);//根据图片的背景设置水印颜色

g.setFont(font); //设置字体

g.drawString(content, x, y);//画出水印

g.dispose();//输出图片

FileOutputStream outImgStream = newFileOutputStream(tarImgPath);

ImageIO.write(bufImg,"png", outImgStream);

outImgStream.flush();

outImgStream.close();

System.out.println("添加文字完成");

}catch(Exception e) {

System.out.println("生成图片出错啦:"+e.getMessage());

}

}

首先根据介绍了解到,从jdk15版本(即jdk1.5_*) 后,可以自定义字体库,添加方式如下链接:https://blog.csdn.net/nisen6477/article/details/82255435 但实际上在这里添加并没有作用,使用以下方式输出tomcat所拥有字体库,发现添加的字体并不存在。

GraphicsEnvironment ge =GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontFamilies=ge.getAvailableFontFamilyNames();for(String s : fontFamilies) {

System.out.println(s);

}

我这只配置到前 5 步就可以了,不需要重启Linux 或字体服务,步骤总结为以下:

1、检查字体是否已经安装:

fc-list  ----------检查所有已有的字体

fc-list :lang=zh -----------只检查中文

2、到 C:\windows\fonts 复制对应字体库,微软雅黑、宋体、黑体等,各文件后缀可能不一样,有的为ttf,有的为ttc,不影响使用。

3、上传刚才复制的字体库到/usr/share/fonts/zh_CN目录下,如果没有该目录,用命令:mkdir /usr/share/fonts/zh_CN  来创建,然后再上传。

4、修改字体权限,使root以外的用户可以使用这些字体:chmod -R 777 /usr/share/fonts/zh_CN,使用777 赋予全部权限,chmod 指令可以查看该链接:https://www.cnblogs.com/lhm166/articles/6605059.html

5、建立字体缓存:

mkfontscale

mkfontdir

fc-cache -fv

6、重启 Tomcat,以上文章中有的说要重启 Linux系统,有的说要重启字体库服务,但我都没有,而且也没有字体服务,只是重启了Tomcat 执行后有效。

7、可以再次使用 fc-list 查看字体库,已经包含了新加入的字体,或者使用上边的Java 输出也包含了新字体,打印中文水印也OK。

java 应用 中文字体_Linux 添加中文字体库,解决Java 生成中文水印不显示问题相关推荐

  1. java 中文字体_Linux 添加中文字体库,解决Java 生成中文水印不显示问题

    本机 Windows 环境测试以下代码生成中文水印完全没问题,但是发布到Linux下不显示,一开始以为是报错了没打印出来,搜索发现直接提示中文乱码的或者不显示的,才明白原来是字体库原因,于是开始解决这 ...

  2. python删除中文停用词_python词云 wordcloud+jieba生成中文词云图

    简介 Python+jieba+wordcloud+txt+gif生成动态中文词云 本文基于爬虫爬取某微信号三个月的文章为例,展示了生成中文词云的完整过程.本文需要的两个核心Python类库: jie ...

  3. java -jar 找不到引用类_怎么解决java -jar找不到主类问题

    怎么解决java -jar找不到主类问题 发布时间:2020-06-26 14:42:44 来源:亿速云 阅读:108 作者:Leah 怎么解决java -jar找不到主类问题?相信很多没有经验的人对 ...

  4. java tree类子项的添加和删除_使用Java实现二叉树的添加,删除,获取以及遍历...

    二叉树节点的声明: static final class Entry>{ //保存的数据 private T item; //左子树 private Entry left; //右子树 priv ...

  5. java邮件附件名称乱码_Java邮件开发(三):解决附件名为乱码及显示友好名称

    遗留的问题有以下两个: 1.附件的名称只能为英文,中文乱码 2.友好名称的显示. 我们使用163等邮箱发送邮件时,我们经常可以看到收件人一栏中会是:张益达 这种方式.在上一版本的代码中并没有使用这样的 ...

  6. java大小端字节流解析_记录一个如何解决java与C++socket通信的大小端问题

    问题背景 oracle jdk默认的socket通信发送int类型数据高位优先.下面是jdk包内部相关源码.(模拟) os.write((len >>> 24) & 0xFF ...

  7. android 11.0 12.0添加系统字体并且设置为默认字体

    1.概述 在11.0 12.0系统定制化开发中,在产品定制中,有产品需求对于系统字体风格不太满意,所以想要更换系统的默认字体,对于系统字体的修改也是常有的功能,而系统默认也支持增加字体,所以就来添加楷 ...

  8. js 利用Unicode码随机生成中文昵称

    前言 网上前辈们分享的随机昵称生成方式,都是通过随机获取事先定义的数组内容进行组合来实现随机生成一个类似真名的数据(最近我做的一个项目需求中的,要求随机生成昵称但是不要真名),那这就有点蛋疼了,我总不 ...

  9. java编译报错提示编码gbk的不可映射字符啥意思_解决java编译错误:编码GBK的不可映射字符...

    [我的Android进阶之旅]解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符 1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责L ...

  10. jspdf添加宋体_JSPDF支持中文(思源黑体)采坑之旅,JSPDF中文字体乱码解决方案...

    我拍个砖,通常标称自己文章完美解决何种问题的,往往就是解决不了任何问题! 众所周知,JSPDF是一个开源的,易用的,但是对中文支持非常差的PDF库. 下面,我教大家,如何在pdf中使用思源黑体.思源黑 ...

最新文章

  1. iOS webview 点击按钮返回上一页面或者返回首页
  2. mysql数据库帐户_MySQL数据库用户帐号管理基础知识详解
  3. PHP 防XSS跨站攻击
  4. scp: /usr/java: Permission denied
  5. Memcached 在linux上安装笔记
  6. 为什么每个人都应该尝试Ubuntu下篇 Why Everyone Should Try Ubuntu 分享
  7. AlphaFold2开源了,不是土豪也不会编程的你怎么蹭一波?
  8. axios的基本用法
  9. Kubernetes学习笔记之Calico Startup源码解析
  10. Apollo 1 融合 Spring 的三个入口
  11. 集合框架之ArrayList集合
  12. java8实现map遍历,map转list,list转map
  13. matlab 偏最小二乘回归,偏最小二乘法回归和判别分析的Matlab开源免费库
  14. 文本表示(Representation)
  15. Word 标题后自动添加分页符、分节符显示与查看
  16. CyanogenMod
  17. 经常问到的前端面试题
  18. Android新浪微博授权提示:文件不存在 C8998 的终极解决方法
  19. grafana是什么?
  20. 3d图形学中的uv坐标

热门文章

  1. java并发包aqu_Java并发包之SynchronousQueue
  2. 火山应用系列之调用炫彩模块自制登陆与主窗口
  3. 安卓system镜像分区_安卓9.0 VIVO X23手机解锁方案
  4. 编程必会的100个代码大全,建议收藏
  5. 刻字机软件工具:::Easy Cut Studio
  6. 51单片机的矩阵键盘、跑马灯和呼吸灯设计
  7. Java语言程序设计(基础篇)
  8. Bootstrap 多媒体对象
  9. 大一java题库及答案_2016最新java考试题库及答案
  10. 如果计算机正执行屏幕保护程序 当用户,计算机一级考试考参试题(含答案)章节一.doc...