bmp转rgb565在framebuffer中显示

忘是亡心i 2022-06-10 11:06 415阅读 0赞

需求:在kernel中自定义显示图片
解决办法:在网上找了很多方法,都是去替换的,那样就有了很大的局限性,还比较麻烦,所以经过研究最后找到此方法:
首先:得到一副图片eg:jpeg格式的图片,可以用格式工厂或者其他软件吧jpeg格式转换为bmp格式的图片,再用工具(BmpCvt链接如下:http://download.csdn.net/download/sinat_29891353/9938183)(本来想免费的,但选项中现在没有0积分的选项了,所以就选择了1积分,支持一下吧= =)将bmp格式图片转换为rgb565的c文件数组。
工具使用方法:
双击打开,然后打开一副bmp格式的图片如下图:
打开一副bmp文件格式的图片
选择file->Save as…后弹出如下图:
在保存类型中选择C bitmap file
在保存类型中选择C bitmap file,然后可以设置自己喜欢的名字如didi.c如下图:didi.c
然后点击保存弹出如下框:
保存格式
可以选择rgb565,或者rgb565红蓝交换即bgr565,或者rgb565压缩,等
然后选择保存即可,我这里选择的high color 565(即rgb565)。然后再桌面生产如下图所示的c文件:
didi.c
用编程工具打开即可看到类似如下的代码:

  1. /*********************************************************************
  2. * Source file: didi *
  3. * Dimensions: 176 * 110 *
  4. * NumColors: 16bpp: 65536
  5. **********************************************************************
  6. */
  7. #include <stdlib.h>
  8. #include "GUI.h"
  9. #ifndef GUI_CONST_STORAGE
  10. #define GUI_CONST_STORAGE const
  11. #endif
  12. static GUI_CONST_STORAGE unsigned short acdidi[] = {
  13. 0xC327, 0xC327, 0xC327, 0xCB27, 0xCB27, 0xCB27, 0xCB47, 0xCB48, 0xCB48, 0xCB48, 0xCB48, 0xCB48, 0xCB68, 0xCB49, 0xCB69, 0xCB69, 0xCB69, 0xD369, 0xD369, 0xD389, 0xD389, 0xD38A, 0xD38A, 0xD38A, 0xD38A, 0xD38A, 0xD3AA, 0xD3AA, 0xD3AA, 0xD3AA, 0xDBAA,
  14. 0xDBAA, 0xDBCA, 0xDBCB, 0xDBCB, 0xDBCB, 0xDBCB, 0xDBCB, 0xDBCB, 0xDBCB, 0xDBEB, 0xDBEC, 0xDBEC, 0xDBEC, 0xDBEC, 0xDBEC, 0xE3EC, 0xE3EC, 0xE40C, 0xE40C, 0xE40C, 0xE40D, 0xE40D, 0xE40D, 0xE40D, 0xE40D, 0xE40D, 0xE40D, 0xE42D, 0xE42D, 0xE42D,

接着在kenel相关文件中申请的framebuffer中,用memcpy将acdidi[ ]图片数据copy到framebuffer中,然后拿去显示即可。

本次遇到的问题,显示后发现图片形状是对的,但是颜色不对,如下图:红蓝颜色反了
解决办法:在工具生成图片时选择high color (565),red and blue swapped这个选项生成bgr565的即可。
好用就点个赞吧。欢迎转载,但请注明来源,谢谢配合。

发表评论

表情:
评论列表 (有 0 条评论,415人围观)

还没有评论,来说两句吧...

相关阅读

    相关 BMP Iplimage

    /\ \ 功能:BYTE组转IplImage,并可实现图像的上下倒置 \入参:pImg,BYTE数组指针。byteSize BYTE数组大小,width图像宽,heig

    相关 bmprgb565framebuffer显示

    需求:在kernel中自定义显示图片 解决办法:在网上找了很多方法,都是去替换的,那样就有了很大的局限性,还比较麻烦,所以经过研究最后找到此方法: 首先:得到一副图片e

    相关 bmpico

    ico文件比较特殊,一般都不能转,这里从网友那儿看到了一段把bmp转ico的代码,没有试过,先留着以后用的上的时候,拿出来试试。多谢网友的分享。 CFileDialog...