arduino u8g2 表情字库制作

U8G2 下载原代码 : GitHub - olikraus/u8g2: U8glib library for monochrome displays, version 2

1.制作图片

arduino u8g2 表情字库制作_第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')
    

你可能感兴趣的:(u8g2,制作表情字体)