使用jdk自带的BufferedImage和Font输出点阵字体图片
目的: 为树莓派使用java控制ssd1306驱动12864oled打基础
B站本人相关指导视频
视频请参考:视频地址
https://www.bilibili.com/video/BV1QV411J75X
需要提前学习的材料
- 我写的代码片段,生成字体点阵部分,参考作者风兮清扬的文章《Java打印文字点阵信息》
- 输出点阵图片代码片段,参考作者宅男小何的文章《JAVA灰度化、二值化图片如此简单方便》
- 查看系统的所有字体,参考作者憨厚老实的老赵的文章《Java查看可用字体》
代码片段
public void getFontImage() throws IOException {
BufferedImage image = new BufferedImage(128, 64,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
//具体的字体名称“叶根友毛笔行书2.0版”,可以通过上边给出的“Java查看可用字体”代码查找到~
g.setFont(new Font("叶根友毛笔行书2.0版", Font.BOLD, 24));
g.setColor(new Color(0xfeab0899));
g.drawString("我爱你", 0, 23);
File newFile = new File("D:\\test.jpg");
ImageIO.write(image, "jpg", newFile);
}
代码输出
输出点阵图片截图见下:
后记
后续需要将该点阵映射到12864oled屏幕上,可能会遇到以下几个问题,先预热一下:
- 跑demo是在windows中跑,windows自带的字体比较多,一般来说demo是能正常输出点阵字体的。
但是最终这个demo是放在树莓派linux系统中生成点阵字,所以要保证树莓派的linux系统中有对应字体,才可以正常显示,but树莓派的linux系统中一般是不带这个字体的,jdk获取字体的原理请参考作者 小奔的早晨 的这篇内容:《Linux环境下Java中文乱码解决方案》 - 上边的这篇内容讲linux安装字体的流程有点模糊,安装字体参考作者 菊次郎的幻想 的文章《验证码图片变成字符》