• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

lcd19264全屏显示图片函数怎么写

yhj416606438 2021-05-07 浏览量:512
底层都调试好了,可以显示文字,但是网上没有显示图片的函数例程,有帮忙可以写一个吗
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 其实现实原理都是一样的啊,只是读取的数据量不同而已,文字是一个一个的字模(一般是单色),而图片分辨率更高,还有颜色而已。

    其实现实的关键就是找到图片像素和 显示屏像素的对应关系(毕竟大多数时候,二者不是一一对应,而是一种映射转换),这又涉及

    1. 图片数据的解析

    2. 图片像素到屏幕显示点的映射关系


    这之后就是按映射关系一一在屏幕上显示的问题啦。


    --------------------

    有人在论坛里投诉我,说我上面的问题回答不够全面,那我就补充到下面:

    前面说了其实显示图片和显示文本没有根本的区别,只是图像像素问题,这点,我想你应该能理解吧,对于具体的全屏显示图片,上面提到了要找到全屏各点与图片各点对应关系问题,我想这点你也该能理解吧?不过这点其实实际处理中又分为多种情况

    1. 图片像素(分辨率)和屏幕像素恰好全对应,这是特例

    2. 图片分辨率的长或者宽小于屏幕,对此有几种处理(略写你自己补充):

        2.1  不处理分辨率适配放大,直接按图片分辨率显示,这又涉及图片放置位置的问题:

            2.1.1 靠顶,又分为
               2.1.1.1 顶左

               2.1.1.2 顶中

               2.1.1.3 顶右

            2.1.2 居竖直中,又分为

               2.1.2.1 中左

          ......

           2.1.3 居竖直底,又分为

               2.1.3.1 底左

           .......

          2.2 填满适配屏幕,则涉及到图片放大问题,要根据一定的取色原则来取色,不过比较好的是lcd19264是单色屏,你取一个阀值作为插值处理时插值计算出值是否显示的标准,来计算出屏幕各点对应图片像素值(其实这里可以理解为构造一个和屏幕分辨率相同的单色图映射处理,相应处理可以参考图像处理算法介绍)

    3.  图片分辨率中又存在一个比屏幕分辨率大、一个比屏幕分辨率小,这也 如2类似有很多种处理策略,如局部裁剪、放缩等等,请你自己按前面的进行补充(类似存在位置处理问题、裁剪关系处理问题、放缩计算问题)

    .....


    根据上面的处理,其实最终得到了一个192x64分辨率的图像啦,这时就需要在屏幕中进行填充,这个你文本显示中其实用到了同样的处理,不需要我再介绍啦吧?如果还觉得不满足,我们再聊。可以聊的其实还有很多,比如不同图片格式的解析、多色图、灰度图转换为单色图的处理,这些有些是多媒体数据处理问题,有些是计算机图形学的知识。

    你那么一句话问,我回答了这么多,还不够?建议先学习下“提问的智慧”。


    下面是函数伪代码

    int DrawAll( char bmp[192][8] ){

       // bmp 是一个按前述要求处理好的 分辨率为192x64 bit,来表征图像的 数组,

       // 因为lcd19264实际上是3个64x64区域,所以还需要对bmp数据再切分,比如bmp其实是 char bmp[192][8],则每个64x64对应像素分别为

      char A0[64][8]={0};

      char A1[64][8]={0};

      char A2[64][8]={0};

      int i;

      int j;

      for(i=0;i<64;i++){

           for(j=0;j<8;j++){

           A0[i][j]=bmp[i][j];

           A1[i][j]=bmp[64+i][j];

           A2[i][j]=bmp[128+i][j];

           }

      }

     // 调用你底层的驱动函数显示64x64数据到每个屏幕的64x64块中,比如假设你的驱动函数是

      // _drawX( int i // 在那个64x64区域绘制

     //                 int x

     //                   int y // 区域内的x,y

     //                 char bmp[64][64] // 区域对应的64x64图像区域

     //                 )

       _drawX(0 0 0 A0);

       _drawX(1 0 0 A1);

       _drawX(2 0 0 A2);

      return 0;

    }

    -----------

    吐槽:社区贴代码吃逗号的问题还是没有解决啊!

    • 发布于 2021-05-07
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 先把图片转成h文件,写入这个h文件中的数组就行
    • 发布于2021-05-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 图片要进行解码后才能显示出来的,或是你用软件直接解析成数据再刷到屏上
    • 发布于2021-05-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

lcd19264全屏显示图片函数怎么写