基于framebuffer显示图片(bmp && png)和汉字

章节

  • 1 功能描述
  • 2 图片显示,字体显示接口
  • 3 使用实例

功能描述

图片显示: 支持位置设置,支持BMP && PNG格式的图片,程序通过读取bmp&&PNG图片的路径,解析图片的点阵掩码mask,再把mask写入framebuffer
汉字显示: 支持字体大小设置(修改代码),可以位置设置,字符串输入
ascii显示: 支持字体大小设置(需要修改代码),可以位置设置,ascii输入

字体显示分为汉字显示和ascii(字母、数字、可见符号), 汉字是点阵文件HZK16, 大小为262k,比之前的矢量文件小1.73M - 262k,引擎代码不依赖libz.so, libfreetype.so 大小为19k,比之前的矢量引擎小278k - 19k,依赖libpng.so

定义接口

图片显示接口: picture_write(x, y, picture_path);
参数
xy: 显示图片位置
picture_path: BMP图片的路径
汉字显示接口: void print_chinese(ft, chinese_str, x, y)
ascii显示接口 void print_ascii(ft, ascii_str, x, x)
参数:
ft: 汉字显示所需的上下文
chinese_str: 显示的字符串,格式"北京锐和信"
ascii_str: 显示的ascii,格式"1234asdf"
xy: 设置显示的位置
注意
如果定义的x,y使图片或汉字超出边界,使图片汉字未能完全显示,忽略出界的部分。

使用实例

图片

int main(int argc, char ** argv)
{
    picture_write(0, 0, argv[1]);

    return 0;
}

汉字

int main(int argc, char **argv)
{
    struct ft f;
    ft_init(&f);
    print_chinese(&f, "北京锐和信", 0, 0);
    return 0; 
}  

ascii

int main(int argc, char **argv)
{
    struct ft f;
    ft_init(&f);
    print_ascii(&f, "1234567adsfsdf", 0, 0);  
    return 0; 
} 

特点

相对于矢量字体,点阵字体灵活性比较差,汉字和字母、数字、可见符号需要不同的输出显示接口,字体大小变化需要修改显示算法,字体形式单一,但是点阵字体的优点在于占用足够小,总共不超过200k。

作者

杨善锦(Jim Yang)
github code

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值