点阵字库放大算法(中文和英文)
因摄像头高标清切换业务需求,需要切换不同大小的字体;
基本原理是把点阵字库的点进行扩展,放大两倍就是一个点变4个点;我这里用的基础字库是16x16的点阵,ASC是8x16的
Talk is cheap, show me the code. 话不多说,放码过来。
//放大两倍,一个点变两个点,中英文是一样的
static void _OSD_FontZoom2(uint8_t font8,uint8_t *data)
{ int m=0,n=0;uint8_t tmp[2];uint32_t tmpd = 0;memset(tmp,0,2); for(m=0;m<8;m++){if((font8>>m)&0x1){tmpd |= 0x3 << (m*2);}else{tmpd |= 0x0 << (m*2);}}tmp[0] = (tmpd >> 8)&0xff;tmp[1] = tmpd&0xff;memcpy(data,tmp,2);
}
//放大3倍
static void _OSD_FontZoom3(uint8_t font8,uint8_t *data)
{int m=0,n=0;uint8_t tmp[3];uint32_t tmpd = 0;memset(tmp,0,3); for(m=0;m<8;m++){if((font8>>m)&0x1){tmpd |= 0x7 << (m*3);}else{tmpd |= 0x0 << (m*3);}}tmp[0] = (tmpd >> 16)&0xff;tmp[1] = (tmpd >> 8)&0xff;tmp[2] = tmpd&0xff;memcpy(data,tmp,3);
}
// ASC放大2倍,入参font16为基础字库点阵数据
static void _OSD_Asc16ToAsc32(uint8_t *font16,uint8_t *font32)
{ uint8_t zoomout[32][2]; //8*16一行8位1字节,扩大为2字节,16列扩大为32列uint8_t zoom[2]; int j=0,i=0; for(;j<16;j++) { _OSD_FontZoom2(font16[j],zoom);memcpy(zoomout[i],zoom ,2); memcpy(zoomout[i+1],zoomout[i],2); i += 2; } memcpy(font32,zoomout,64);
}
//汉字放大2倍
static void _OSD_HZ16ToHZ32(uint8_t *font16,uint8_t *font32)
{ uint8_t zoomout[32][4]; //16*16一行16位2字节,扩大为4字节,16列扩大为32列uint8_t zoom[2]; int j=0,i=0,n=0; for(;j<32;j++) { n = j%2; _OSD_FontZoom2(font16[j],zoom); memcpy(zoomout[i]+n*2,zoom ,2); if(n != 0) { memcpy(zoomout[i+1],zoomout[i],4); i += 2; } } memcpy(font32,zoomout,128);
}
//汉字放大3倍
static void _OSD_HZ16ToHZ48(uint8_t *font16,uint8_t *font48)
{ uint8_t zoomout[48][6]; uint8_t zoom[3]; int j=0,i=0,n=0; for(;j<32;j++) { _OSD_FontZoom3(font16[j],zoom);n = j%2;memcpy(zoomout[i]+n*3,zoom ,3);if(n != 0) {memcpy(zoomout[i+1],zoomout[i],6); memcpy(zoomout[i+2],zoomout[i],6); i += 3;}} memcpy(font48,zoomout,288);
}
点阵字库放大算法(中文和英文)相关推荐
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- JS-只能输入中文和英文
<span style="font-family:KaiTi_GB2312;">转自:<a target=_blank href="http://www ...
- 自己收集整理的微软错误代码大全(中文和英文)
自己收集整理的微软错误代码大全,分别为中文和英文部分,供广大软件开发人员共勉. 微软错误代码 2.1 中文 0 操作成功完成. 1 功能错误. 2 系统找不到指定的 ...
- JS正则验证输入框姓名只能输入中文和英文
js只包含中文和英文 name: [{required: true,message: '请输入姓名',trigger: 'blur'},{pattern: /^[a-zA-Z\u4e00-\u9fa5 ...
- 验证中文和英文姓名 正则表达式
出处:https://blog.csdn.net/kekekeqi/article/details/80881718 参考上面链接文章,以访丢失,再次粘贴一次 ^([\u4e00-\u9fa5]{2, ...
- 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别
关于height值设置和显示不同的原因 height: 100px; CSS中把高度设置为100px,但是实际测量发现高度为125px 这个是因为:笔记本默认显示大小为125%,所以100的125%就 ...
- date日期格式中文和英文显示
date日期格式中文和英文显示 ##背景 由于日志文件里面输出的日期格式是'24-Dec-2019'这样的,但是在写脚本获取日期的时候,一直显示 '24-12月-2019'这样的格式导致匹配不到相应日 ...
- python正则匹配空格+数字+空格_如何批量添加中文和英文数字之间的空格?用正则表达式吧...
1.中文与英文数字混合使用,排版有规范 写作中,我们经常遇到以下中文与英文.数字混用的情况. 我自学python编程,是在xue.cn上进行的.时耗方面,基础功仅需50多小时,加上很多实战,包括初步运 ...
- 转 JS-只能输入中文和英文
<span style="font-family:KaiTi_GB2312;">转自:<a target=_blank href="http://www ...
最新文章
- Ext.DomHelper类的使用示例(内容操作)
- TCP三次握手四次挥手 TCP/UDP区别
- linux系统下codeblocks控制台打印中文乱码
- 微软2022服务器,​微软公开地分享了即将发布的WindowsServer 2022的特性
- 29 FI配置-财务会计-外币评估-分配到评估范围和会计核算原则
- (ヒトコト)一个挺有趣的东西!作为一个动漫宅,游戏宅来说还是一个挺有趣的接口!banner上面就是...
- 企业以太坊联盟发布了愿景文件
- 第1章 程序设计和C语言
- JavaScript学习(八十六)—运算符知识点总结
- 08.存储Cinder→5.场景学习→08.Backup Volume→2.实操
- linux 源代码安装mysql5.5_linux下通过源码包安装MySql5.5
- nginx 配置参数说明
- 《游戏设计艺术(第2版)》——学习笔记(9)第9章 游戏为玩家而生
- bat脚本重启IIS中的网站
- 【学术】自然语言处理国内外著名会议、期刊
- 8位并行左移串行转换电路_单片机试题
- 93复原IP地址(递归回溯法)
- 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性~
- SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
- 2023第六届东北(沈阳)国际幼教产业及装备展览会