查看: 2478|回复: 0

GD32207I-EVAL之LCD显示图片(用image2Lcd)

[复制链接]
  • TA的每日心情
    慵懒
    2022-10-25 08:55
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-10-31 09:06:09 | 显示全部楼层 |阅读模式
    分享到:
    本来很小的一件LCD显示图片事件,却足足花了我2个小时,真是惭愧啊。众所周知,显示图片的方法是现将图片(图片分辨率须小于屏幕分辨率)通过软件转化成一个C格式的数组。然后将这个数值的值装在到屏幕写点函数里面,逐个扫描显示出来,这样我们就能够显示一副完整的图像了。
    可是今天我在用GD32207I开发板做实验时,图片(我在网上DOWN的一张分辨率为480*272)怎么转换数组,修改后,下载完发现图片明显是乱码。我怀疑是图片分辨率过大的原因,查看了自带例程里的那个Background图片,发现它分辨率是440*182而且是BMP格式。
    这就是自带的Background图片。
    于是我有下载了张BMP格式的320*240的图片,可是转换出来还是不行。后来尝试了好几遍,就是显示乱码。
    网上查资料,有人说要把软件上高位 在前,这一项勾选上。

    勾选后发现还是失败。又有人说要把16真彩,那边3个颜色顺序改为;红绿蓝,最后证明也是错的。

    真是百思不得其解。
    后来在网上看到这么一句话:
    image2lcd图片头文件信息:
    图片头数据的第2~5个字节表示宽和高,假设图片数组BMP_BUF[],高位在前时
    bmp_withd=(BMP_BUF[2]<<8)|BMP_BUF[3]
    bmp_lenth=(BMP_BUF[4]<<8)|BMP_BUF[5]
    第一个字节是扫描方式,低四位为0水平扫描,为1垂直扫描
    第二字节输出灰度0x04--16灰   0x18--24真彩色,0x10--16真彩色  0x20--32真彩色

    我打开程序上background.c看了下。里面果然有头文件信息:

    被注释掉的那部分。经过比较得出:水平扫描,16位真彩。
    我就不信邪了,既然它自带的Background图片能好使,为什么其他图片不行呢?我将下载的图片强行转换成一样的分辨率:440*182,并且格式也转换成BMP.这次转换后将生成的数值带入,下载执行后发现OK。
    正确配置软件如下:


    可以看出,其对颜色的顺序并没有改动。而且程序中对RGB位数也有提示:

    这样我们就正确选好了。
    最后上张效果图:

    由于程序是在自带样例

    改的。再谈谈这个程序本身,这个程序很好的阐述了动画或者视频播放的本身原理。它分两部分显示,一个就是不动的背景图片,一个就是能够动的蹦跑的豹子的图片。对豹子图片区域,不停刷新豹子蹦跑动作的连贯图片,就是按照一定的速度刷新图片,就能达到动画的效果了。很有参考价值。
    菜鸟学习过程,老鸟勿喷!
    附上图片编辑用的软件名称:
    图片格式转换(jpg2bmp):pconverter_setup4.9.2.exe  装好后图标名称:

    图片裁剪:Resize图片转换:

    图片转码:image2Lcd

    下载地址:
    链接:https://pan.baidu.com/s/1sljHr7f 密码:j89n
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-2 04:26 , Processed in 0.114051 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.