问题:项目部署在统信(uos)操作系统中,带水印的图片无法正常了浏览。
报错信息:java.lang.ArrayIndexOutOfBoundsException: -65010836
或者是
图片水印中文显示乱码
关键代码
BufferedImage image = ImageIO.read(fileStream);
Graphics2D g2d=image.createGraphics();
g2d.drawString(watermarkText, x, y);// y保证至少可以显示一个水印的高度
// 在第三行处:g2d.drawString(watermarkText, x, y); 此行代码报错
//报错信息:java.lang.ArrayIndexOutOfBoundsException: -65010836
// 和网上搜到的报错信息不同:网上大部分为中文乱码
解决办法
将windows系统中的字体文件复制过来
一:到 从c:/windows/Fonts 文件夹中复制 simsun.tcc STSONG.TTF 字体文件
二: 将字体文件复制到jdk 目录 的 jre/lib/fonts 目录下
三: 在 /usr/share/fonts/ 目录下新建文件夹 winFonts 再将字体文件复制到 linux系统的 /usr/share/fonts/winFont 目录下
四: 最重要的是将字体文件复制后需要执行命令才能生效
依次执行:
sudo mkfontscale
sudo mkfontdir
sudo fc-cache –fv
最终完成,将tomcat重启后,查看带水印图片,正常显示