数码相框-----------字符编码

2.显示文字

2.1 文字编码方式     数字    代码什么  显示为什么   引入字符编码       使用不同的编码代码不同的文字

    1.0 开始阶段                          欧美人发明计算机   用一个字节表示  8位里面的低七位表示字母   0x61  A   0x41

    2.0 字符编码阶段                     中   D6D0  GBK       港澳台   繁体字      用什么表示哪一个文字     BIG5     BIG5编码表

    3.0 全世界同一个 unicode      用什么数字  表示  字符/字   

文件: abc    ascii     61 62 63       9字节

    4.0用什么方法既节省内存又能表示    UTF-8    UTF-16LE      UTF-16BE  

    

                          数字    代表    字                   通过字符编码格

    字符编码表通过什么存储    用UTF-8    UTF-LE

    显示:   字体文件包含:      1.0编码表      2.字体数据  (宋体   新宋体)       

               写一个带有汉字的文件, 如何存储的

               #include  <stdio.h>

    int   main(int argc,char *argv)

    {

        int  i =0;

        unsigned   char  *str = "abc中";

        while(str[i])

        {

          printf("%02x",str[i]);

          i++;

        }

        printf("\n");

        return 0;

    }

    保存为  ansi.c     utf-8.c   

    同一段相同的代码用不同的编码方式,会导致不同的结果

    man  gcc

    编译程序要指定字符集

    /charset

    -finput-charset= charset        表示源文件的编码方式,默认以UTF-8来解析

    -fexec-charset=charset         表示可执行程序的字以什么编码方式来表示,默认是UTF-8

          ex: gcc -o a  a.c                //默认 UTF-8    

          gcc  -fexec-charset=GBK    -fexec-charset = UTF-8    -o   uff-8    ansi.c

2.2英文字母,汉字的点阵显示

    原理:                     开发板 :   cpu     LCD控制器        SDRAM(framebuffer)      修改framebuffer  就可以显示

    echo   hello   >  /dev/tty1                         在lcd 上可以显示  hello   说明内核中肯定有点阵文件                8x16像素      8x16bit

                        0x41   字母 A       找到字母A  的点阵   

    统计信息:    fstat(hz_hzk16,&hzk_stat);       //统计汉字库的信息

          memset();

    HZK16  的使用方法   

    测试:
    1.0 配置、修改内核支持把lcd.c编译进去

        cp   /work/drivers/10th_lcd/lcd.c     drivers/video

      vi    drives/Makefile 

    2.0 使用新内核启动

    

    3.0 freetype 库  字体引擎与指南

      点阵的形式描绘出各种字体文件    C盘里面  simsun.ttc  新宋      中  字形  glyph(关键点)

      想象一个字体文件的显示过程

        1.给定一个文字    ‘A’  可以确定编码值

        2.根据“编码值”从字体文件中找到    charmaps   

           3.设置字体大小

        4.用某些函数把glyph的点缩放位

        5.转换位图点阵

        6.在lcd上显示出来

    4.0代码的过程

      详见使用指南

      1.0初始化

      2.0加载字体FACE   FT_New_Face

      3.0设置字体大小   FT_set_char_size    FT_Set_Pixel_size

      4.0加载编码值   glyph  = FT_Get_Char_Size

                                      FT_Load_Glyph()

         根据编码值 取出

          转换为位图  FT_Set_charmap

      5.0 旋转  

   英文字母,汉字的显示 

 

2.4  jpg 图片 压缩的图片   图片损失少      

  jpg 图片 得到RGB数据  存放到显存

  显存里面存放的象树的RGB数据

  把jpg图片解压出RGB的原始数据

   如何解压  libjpeg工具  libjpeg-turbo

  libjpeg-api    libjpeg是使用c语言实现的读,写JPEG文件的库(使用libjpeg的应用程序是以“scanline”为单位进行图像处理的)     

       JPEG  压缩对象  解压对象

  1.0 分配和初始化一个decompression对象

  2.0提定源文件

  3.0用jpeg  read_header 获得jpg信息

  4.0设置解压参数,比如放大  缩小

  5.0启动解压 :  jpeg_start_decompress

        6.0循环调用jpeg_read_scanes

  7.0jpeg_finish_decompress

  8.0释放decompress结构体

libjpeg  是一个矩形  一行数据是一个 scanline  某个像素的值   含有component  3个component

                     

                             

posted on 2021-04-06 09:26  Ablerry  阅读(130)  评论(0编辑  收藏  举报