教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

TjpgDec技术手册(中文版) - 图文

来源:网络收集 时间:2026-05-22
导读: TjpgDec技术手册 -------R0.01b版 前言 相信大家对FATFS文件系统都不陌生了,2012年FATFS的作者推出了JPG/JPEG图片的解码函数库TJpgDec的R0.01b版,使用方法和FATFS文件系统的使用一样,仅仅调用2个简单的库函数就能完成对JPG/JPEG图片的解码,而且输出的数

TjpgDec技术手册 -------R0.01b版

前言

相信大家对FATFS文件系统都不陌生了,2012年FATFS的作者推出了JPG/JPEG图片的解码函数库TJpgDec的R0.01b版,使用方法和FATFS文件系统的使用一样,仅仅调用2个简单的库函数就能完成对JPG/JPEG图片的解码,而且输出的数据格式为RGB888或RGB565。

本文档是根据ChaN的专用网页提供的英文版技术手册翻译而来,因个人水平有限以及时间仓促,错误之处在所难免。本文档原始版权归TJpgDec的作者所有,本人只是做了一下翻译的工作,把这篇文档献给所有嵌入式开发人员,希望能够帮到你们。 嵌入式奋勇前进 2013-10-20

一.前言:

TJpgDec是一款为小型嵌入式系统服务的高效且完善的JPEG图片解码模块。它占用内存极少,因此可以移植入像AVR,8051,PIC,Z80,Cortex-M0等等小型单片机中。 二.特点:

? ? ? ?

?

库函数是按照ANSI-C规范编写的,所以应用平台不受约束。

易于使用的主模式操作方式。 完全可重入的架构。 非常小的内存占用:

o RAM仅占用3KB,而不受图片大小的影响。 o ROM 占用3.5-8.5KB,主要用于存储代码和const常量。 输出格式:

o 输出图片比例: 1/1, 1/2, 1/4 ,1/8 可选 o 输出像素格式: RGB888/RGB565(可预设)

三.应用程序接口:

共有2个应用程序接口函数,用于分析和解码JPEG图片(译者注:移植TJpgDec时需要在主程序中调用这两个库函数)

? jd_prepare –为解码一个JPEG图片做准备 ? jd_decomp –解码JPEG图片

四.I/O接口函数:

TJpgDec需要用户自定义2个I/O接口函数,用于输入JPEG数据和输出解码后得到的像素数据。

Input funciotn - 从输入的数据流中读取JPEG的数据

? Output function – 把解码后得到的像素数据发送到输出设备

?

五.备注说明:

TJpgDec应用模块是一款可用于教育和研发的开源软件。你完全可以根据自己的项目需要或者商业产品的需要,自由更改本软件,而不用担负任何个人责任。

六.ChaN的个人网页:(即TjpgDec库函数下载地址)http://elm-chan.org/fsw/tjpg/00index.html 注:其他信息,如各版本信息,在此不作翻译了。

第一章 TjpgDec使用方法

1. 如何使用TjpgDec

首先创建并运行下面的例程中的程序,这是使用TjpgDec的基础,同时,这也是TjpgDec的典型用法,而且这种用法可以减少调试中的错误出现。TjpgDec模块分为两个部分,第一个部分对JPEG图片的信息进行分析,第二个部分用于解码JPEG图片。(译者注:原技术手册中的例程是一个在PC机上运行的例程,能够作为MCU移植的一个参考。在本文最后面,本人根据自己对TjpgDec的移植情况写出来了一个移植到STM32单片机的例程。)

使用步骤:

1. 初始化输入的数据流(例如:打开一个图片文件)。 2. 分配JPEG解压缩对象和工作区。

3. 调用函数jd_prepare() ,用于分析JPEG图片的信息,并为接下来的解码做好准备。 4. 根据JPEG图片信息分析得到的数据,对输出设备进行初始化 。 5. 调用函数jd_decomp() ,对JPEG图片进行解码。 2.系统架构

3.例程: /*------------------------------------------------*/ /* 可以在PC机上运行的TjpgDec 模块快速评估测试例程*/ /*------------------------------------------------*/ #include #include #include \//用户自定义的解码工作中使用的应用信息的结构体(在MCU的使用中不需要此结构体) typedef struct { FILE *fp; /*指向输入文件的指针(JPEG文件)*/ BYTE *fbuf; /*指向输出缓冲区的指针*/ UINT wfbuf; /*输出缓冲区的宽度[pix] */ } IODEV; /*------------------------------*/ /*用户自定义的输入函数 */ /*------------------------------*/ //jd:指向需要解码的对象的指针,记录了需要解码的对象的应用信息 //buff:指向存储读取的数据的缓冲区的指针 //nbyte:将要从输入数据流中读取/删除的数据的字节数 UINT in_func (JDEC* jd, BYTE* buff, UINT nbyte) { IODEV *dev = (IODEV*)jd->device; /* jd_prepare函数中使用的应用信息结构体 */ if (buff)//输入数据缓冲区的指针不为NULL的情况下 { /* 从数据输入流中读取数据,返回值为读取到的字节数目*/ return (UINT)fread(buff, 1, nbyte, dev->fp);//从指定文件中读取指定数据量的数据到输入缓冲区中 } else { //当buff为NULL时,表示从输入流中删除数据 /* 从数据输入流中删除数据*/ return fseek(dev->fp, nbyte, SEEK_CUR) ? 0 : nbyte;//对文件中的数据进行重新定位,相当于删除相应的数据 } } /*------------------------------*/ /*用户自定义的输出函数 */ /*------------------------------*/ //jd:指向需要解码的对象的指针,记录了需要解码的对象的应用信息 // bitmap:用于接收已解码好的RGB数据 // rect:像素块的大小(在TjpgDec中,图像的显示是以块的形式出现的,而不是一个一个像素点的形式) // dev->fbuf:指向存储输出数据的缓冲区的指针 UINT out_func (JDEC* jd, void* bitmap, JRECT* rect) { IODEV *dev = (IODEV*)jd->device;//从解码对象的信息中取出应用信息 BYTE *src, *dst; UINT y, bws, bwd; /* Put progress indicator */ if (rect->left == 0) { printf(\ } /* 把解码后得到的数据转存到输出缓冲区中 (使用RGB888格式) */ src = (BYTE*)bitmap;//指向已经解码好的RGB位图数据的指针 dst = dev->fbuf + 3 * (rect->top * dev->wfbuf + rect->left); /* 图片的矩形像素块的左上角的地址(图片起始点)*/ bws = 3 * (rect->right - rect->left + 1); /* 矩形像素块的一行数据的宽度[byte] */ bwd = 3 * dev->wfbuf; /* 输出数据缓冲区的一行的宽度 [byte] */ for (y = rect->top; y <= rect->bottom; y++)//从顶端开始取数据,一直取到最底端(bottom),每次取一行的数据 { memcpy(dst, src, bws); /* 存储矩形像素块一行的数据 */ src += bws; dst += bwd; /* 准备存储矩形像素块下一行的数据*/ } return 1; /* 返回值为1,继续执行解码操作 */ } /*------------------------------*/ /* 主函数 */ /*------------------------------*/ int main (int argc, char* argv[]) { void *work; /* 指向解码工作区的指针 */ JDEC jdec; /* 解码的对象 */ JRESULT res; /* TjpgDec应用函数的返回值*/ IODEV devid; /* 用户自定义的应用信息结构体 ,包含待打开的文件以及输出缓冲区的指针等*/ /* 打开一个 JPEG 文件 */ if (argc < 2) return -1; devid.fp = fopen(argv[1], \打开待输入的文件 if (!devid.fp) return -1; /* 为TjpgDec分配一个解码工作区 */ work = malloc(3100); /* 做好准备解码的工作 */ res = jd_prepare(&jdec, in_func, work, 3100, &devid); if (re …… 此处隐藏:2586字,全部文档内容请下载后查看。喜欢就下载吧 ……

TjpgDec技术手册(中文版) - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/403403.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)