关于java 向图片添加文字时的乱码问题

来源:互联网 发布:淘宝发布被限制 编辑:程序博客网 时间:2024/05/16 19:15

由服务器对图片文字进行合成,前段都好好的。服务器为linux

这边要求改用方正字体,果断乱码了,打出一溜方框。

出现问题最主要的是排查问题所在。第一想到的是因为字体名称为汉字,前端给server传的时候是不是乱码了。我是用post传的,这应该不会,跟后台后,果然不是这的原因。求救于搜索引擎。

关键字:“drawString   乱码”一搜,有几个帖子,锁定在server上没有字体这个线索上。

首先写了个程序,用于获取主机所支持字体的

import java.awt.GraphicsEnvironment;public class GetFont {public static void main(String[] args) {String[] fontNames=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();for(String fontName:fontNames){System.out.println(fontName);}}}

上传到服务器上编译执行了一下,只有几个逻辑字体,没有物理字体。应该是了,又写了个测试程序先上传到服务器

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class TestFont {public static void main(String[] args) {BufferedImage bi = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);Graphics g = bi.getGraphics();Color color = g.getColor();System.out.println(color);g.fillRect(0, 0, 800, 600);((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);g.setFont(new Font("方正黑体简体", Font.PLAIN, 30));g.setColor(Color.black);g.drawString("相见时难别亦难", 200, 50);g.setFont(new Font("微软雅黑", Font.BOLD, 30));g.setColor(Color.black);g.drawString("相见时难别亦难", 200, 85);g.setFont(new Font("方正大黑简体", Font.PLAIN, 30));g.setColor(Color.black);g.drawString("相见时难别亦难", 200, 120);g.dispose();bi.flush();//新名字            String fname = "abc";try {ImageIO.write(bi, "jpg", new File("/" + fname + ".jpg"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} //将其保存在C:/imageSort/targetPIC}}


分别是方正黑体,微软雅黑,方正大黑。直接在服务器上编译执行,毫无疑问,生成的图片上仍是乱码。


查阅了一下,了解到jvm支持的字体是在%JAVA_HOME%/jvm/lib/font下,ftp上去即可了。不知道路径直接 echo $JAVA_HOME看看就知道了

注意windows里   c:/windows/font文件夹里都是已安装的字体,不能直接ftp上传,拷出去在上传到linux即可。这样传上去的字体只是java支持,不过也没必要都支持,linux作为服务器,其他程序也没有图形界面。

再次执行测试程序,这次打印出来的就对了


问题解决

0 0
原创粉丝点击