U8G2 下载原代码 : GitHub - olikraus/u8g2: U8glib library for monochrome displays, version 2
1.制作图片
使用FLASH 或任何可以画图的软件制作动态图片PNG格式
大小最好先设定好如40x80 ,最好不要太大 128X64,60X60
将制作好的图片放入 下载好的 u8g2-master\u8g2-master\tools\font\png2bdf\tst\目录下
(新建tst文件夹)
2.将图片变成字体
打开下载的U8G2源文件 找到u8g2-master\u8g2-master\tools\font\png2bdf
使用cmd命令 进入u8g2-master\u8g2-master\tools\font\png2bdf 或是 创建bat文件,添加下面语语
png2bdf -o tst\myfont.bdf -f myfont -e 65 tst\*.png //将tst文件夹下所有Png文件 转换成bdf字体格式 编号(-e) 从65 开始 glyph中使用(示列来自U8G2源代码中的示列文件 )
运行上面代码将生成myfont.bdf文件
(白底 使用 -i 选项 翻转颜色)png2bdf -o tst\myfonti.bdf -f myfont -e 65 -i tst\*.png
3.将bdf文件生成 字体文件
进入u8g2-master\u8g2-master\tools\font\bdpconv下
使用使用cmd命令 进入u8g2-master\u8g2-master\tools\font\bdpconv
或在目录下 创建bat文件,添加下面语语,使用bdp生成c
bdfconv.exe -v -f 1 -m "64-511" myfont.bdf -o myfont.c -n myfont -d myfont.bdf
type myfont.c //将myfont.bdf转换成 myfont.c 字体名(-n) myfont 描述信息(-d) myfont.bdf
编码号 从 64-511 glyph中使用
myfont.c中添加声明 “u8g2.h",复制到 Arduino\libraries\U8g2\src\clib 下
打开arduino 示列 u8g2 ->weather或是其它
添加
extern uint8_t myfont1[]; //表情字体
void emo_tst(void)
{
//emo 字体
u8g2.setFont(myfont1);
u8g2.setColorIndex(draw_color);
int k = 0;
for(int i = 0;i<66;i++)
{
k = k+1;
u8g2.clearBuffer();
u8g2.drawGlyph(34,60,65+k%8); //使用%循环播放 8为图片的数量,65为png bdf生成时设置的值
//u8g2.drawGlyphX2(0,0,65+k%8);
u8g2.sendBuffer();
delay(100);
}
}
****png 位深须为1 : 处理方法 保存为单色位图 bmp ,后再保存为png
png2bdf 命令 -o 输出文件 名 -f 字体名称 tst\*.png 文件tst下所有png文件 -e 编码号开始 即显示时的第一个编码号设置 glyph显示时 65
bdfconv.exe 命令
.c文件中添加 #include"u8g2.h" 否则错误
错误
表情字体显示错误
删除错误的图片重新编辑
MP4转GIF python代码
import os
import imageio
def mp42gif(file_name):
rd = imageio.get_reader(file_name)
wt = imageio.get_writer('1.gif',mode="I",size=(80,40))
for frame in rd:
wt.append_data(frame)
wt.close();
mp42gif(args[1])
GIF转PNG代码
import os
import sys
from PIL import Image
from PIL import ImageSequence
from pathlib import Path
def gif2png(file_name):
image_name = 'gif'
i = 0;
with Image.open(file_name) as im:
for i,frame in enumerate(ImageSequence.Iterator(im)):
if(i % 5 == 0):
pt = Path(file_name).stem
frame = frame.convert('1')
frame.save(r".\tst\%s%02d.png"%(pt,i))
i = i+1;
if(__name__ == "__main__"):
u = 0
for i in (sys.argv):
if(u >0):
gif2png(i)
print(i)
u = u+1
input('ab')