关于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
- 关于java 向图片添加文字时的乱码问题
- ios 关于如何消除在向cell中添加图片文字是时出现的重影问题
- 【JAVA】使用jacob生成的html,关于文字乱码处理,图片无法显示等问题。
- 向SQL Server数据库添加图片和文字的功能
- java图片添加文字
- 向SQLServer数据库添加图片和文字
- python向图片里添加文字
- 关于向Android项目中的drawable下添加图片却无法使用的问题
- 关于文字环绕图片的问题
- JAVA中关于向JLabel里面添加图片的方法例子
- FFMPEG添加文字中文显示乱码的问题
- java 给图片添加文字
- java图片添加水印文字
- Java之图片添加文字
- 关于Java调用批处理命令向mysql导入数据的中文乱码有关问题
- matplotlib的图片文字乱码
- hibernate向MySQL添加记录时出现的中文乱码问题
- 解决servlet向mysql添加数据时的中文乱码问题
- Hibernate properties详解
- CSS3 Media Queries 屏幕自适应
- String类、StringBuffer类、StringBuilder类的详细讲解
- 解决eclipse中logcat不显示log的问题
- ubuntu下配置jdk 1.7教程
- 关于java 向图片添加文字时的乱码问题
- Google Python Style Guide
- Linux下Eric4开发,遇见“ could not start Qt-Designer”错误的解决办法
- CWnd::OnNcHitTest 消息说明
- 使用CreateProcess执行命令行
- 完美蜕变
- 一个非常有用的函数——COALESCE
- VS2013 转换为web应用程序
- UVa 300 题记录(⊙_⊙)