33. GIF图片显示

GIF(Graphics Interchange Format)即图形交换格式, 是由CompuServe公司在1980年代开发的一种图像文件格式。它被设计用来在数据网络之间传输图像。 GIF标准支持交错、透明度、应用程序定义的数据,动画和原始文本的渲染。 GIF文件使用LZW (Lempel-Zif-Welch)文件压缩方法来压缩图像数据。GIF格式有两种版本, 一种版本只能存储一张图像,而另一种版本加入了对多帧图像的支持,这便是我们熟知的动图。

emWin在做GIF解压的时候需要大约16KB左右的RAM空间。在完成图像绘制后,用于解压的RAM空间会被释放。
在这里插入图片描述
33.1.1. GUI_GIF_DrawSub()
在当前窗口中的指定位置绘制gif文件的给定子图像,该文件已被加载到内存中。

代码清单:GIF-1 函数原型

int GUI_GIF_DrawSub(const void *pGIF, U32 NumBytes, int x0, int y0,
                    int Index);
  1. pGIF: 指向gif文件所在的存储区的开始的指针;

  2. NumBytes: gif文件的字节数;

  3. x0: GIF左上角在屏幕上的x位置;

  4. y0: GIF左上角在屏幕上的x位置;

  5. Index: 要显示的子图像的索引,从0开始。

返回值:绘制成功返回0,绘制失败返回非0。

33.1.1.1. GUI_GIF_DrawSubEx()
在当前窗口的指定位置绘制gif文件的给定子图像,该文件不必加载到内存中。

代码清单:GIF-2 函数原型

int GUI_GIF_DrawSubEx(GUI_GET_DATA_FUNC *pfGetData, void *p, int x0,
                    int y0, int Index);

  1. pfGetData: 指向用于获取数据的函数的指针;

  2. p: 传递给pfGetData指向的函数的空指针;

  3. x0: GIF左上角在屏幕上的x位置;

  4. y0: GIF左上角在屏幕上的x位置;

  5. Index: 要显示的子图像的索引,从0开始。

返回值:绘制成功返回0,绘制失败返回非0。

33.1.2. GUI_GIF_GetImageInfo()
返回已加载到内存中的GIF文件的给定子图像的信息。

代码清单:GIF-3 函数原型

int GUI_GIF_GetImageInfo(const void *pGIF, U32 NumBytes,
                        GUI_GIF_IMAGE_INFO *pInfo, int Index);
  1. pGIF: 指向gif文件所在的存储区的开始的指针;

  2. NumBytes: gif文件的字节数;

  3. pInfo: 指向GUI_GIF_IMAGE_INFO结构的指针,该结构由函数填充;

  4. Index: 要显示的子图像的索引,从0开始;

返回值:获取成功返回0,获取失败返回非0。

此函数主要用来获取GIF动图的一些基本信息,其中子图象的显示时长在播放动图的时候很有用,如果显示时长为0,则使用默认的10ms长度。

代码清单:GIF-4 GUI_GIF_IMAGE_INFO结构原型

typedef struct {
   
    int xPos;
    int yPos;
    int xSize;
    int ySize;
    int Delay;
} GUI_GIF_IMAGE_INFO;
  1. xPos: 最后绘制图像的X位置;

  2. yPos: 最后绘制图像的Y位置;

  3. xSize: 最后绘制图像的X大小;

  4. ySize: 最后绘制图像的Y大小;

  5. Delay: 每张子图象的显示时长,单位10ms。

33.1.2.1. GUI_GIF_GetInfo()
返回一个信息结构,其中包含关于已加载到内存中的给定GIF文件中的子图像的大小和数量的信息。

代码清单:GIF-5 函数原型

int GUI_GIF_GetInfo(const void *pGIF, U32 NumBytes, GUI_GIF_INFO
                    *pInfo);
  1. pGIF: 指向gif文件所在的存储区的开始的指针;

  2. NumBytes: gif文件的字节数;

  3. pInfo: 指向GUI_GIF_INFO结构的指针,该结构由这个函数填充。

返回值:获取成功返回0,获取失败返回非0。

代码清单:GIF-6 GUI_GIF_INFO结构原型

typedef struct {
   
    int xSize;
    int ySize;
    int NumImages;
} GUI_GIF_INFO;
  1. xSize: 图像的X大小;

  2. ySize: 图像的Y大小;

  3. NumImages: 文件中子图像的数目。

33.2. GIF图片显示实验
接下来我们通过一个实验来讲解如何简单的显示GIF图片,更多API函数的演示实验可参考官方例程2DGL_DrawGIF.c,例程路径如下:

SeggerEval_WIN32_MSVC_MinGW_GUI_V548\Sample\Tutorial\2DGL_DrawGIF.c

33.2.1. 代码分析
33.2.1.1. 绘制外部存储器(SD卡&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式课程设计gif图片显示是指在嵌入式系统中实现对gif格式的图片显示功能。在设计这样的课程时,首先需要考虑嵌入式系统的硬件平台和软件开发环境。硬件平台可以选择一些常用的嵌入式开发板,如Arduino、树莓派等,确保它们具有足够的处理能力和存储空间来支持gif图片显示。 其次,需要选择合适的嵌入式操作系统和开发工具。常用的嵌入式操作系统有嵌入式Linux、RTOS等,开发工具可以选择嵌入式开发集成环境,如Keil、IAR等。有了合适的硬件平台和开发工具,就可以开始着手设计gif图片显示的功能了。 在具体的功能设计中,需要考虑如何解析gif图片的格式、如何在嵌入式系统中存储gif图片数据、如何控制显示屏幕输出等问题。其中,gif图片的解析和存储是比较关键的部分,需要设计合适的算法和数据结构来支持gif图片显示。 最后,还需要考虑用户界面和交互设计,如何让用户在嵌入式系统上选择、加载和显示gif图片。可以设计一些简单的图形界面或者命令行界面来进行交互。 总的来说,嵌入式课程设计gif图片显示涉及到硬件、软件、算法等多个方面的知识,需要综合运用嵌入式系统的相关知识来完成。这样的课程设计有利于学生深入了解嵌入式系统的应用和原理,提高他们的实际动手能力和解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值