我以前的帖子:<br />---------------------------<br />一个700行代码完成的Jpeg图片解压源码<br /><br /> 一个700行代码完成的Jpeg图片解压源码<br />--------------------------------<br />jpeg2code.exe 把当前目录的print.jpg打印到print.txt<br />jpeg2code.cpp jpeg2code.exe的源代码<br />Jpeg_decode.c 在ARM9裸机平台上测试过的Jpeg解压代码<br />DECODE.C Jpeg_decode.c代码的原型,可用TC编译,并在真实DOS下执行<br />DECODE.EXE DOS下可执行,看效果,XP 的CMD窗口就不要执行了,本来就不是真实的DOS环境。<br />print.jpg 测试的图片<br />print.txt 图片的内容<br />--------------------------------<br /> 1.JPEG解压的代码不是我写的,因此不要问问关于解压原理什么的。<br /> 2.最初在网络上找到的是DECODE.C这份源代码。我的贡献仅仅在于把这份DOS下的代码移植到ARM的平台上,只要更改是数据宽度定义的问题。见jpeg_decode.C中的#define _INT_ short<br /> PC上 short / int是32bit宽度的<br /> 而ARM上short是16bit int是32bit的<br /> 3.原有代码编写质量确实不敢说是好的,但厉害的是短短700行的代码就能完成Jpeg解压,比我见过很多别的Jpeg解压代码要简单的多很多,这点我佩服,而且我们这些搞应用的,这个能直接拿来应用,<br />这是不错。<br /> 4.我的ARM平台是ARM9 我是把该函数用的WINCE的Eboot中做**显示用的。实际测试过的。编译用的是WINCE 的Platform Builder,你们应该可以很简单移植到ADS下编译的。<br /><br />Jpeg_decode.c 两个调用的函数<br />extern void LCD_DrawPixel(INT16U x0, INT16U y0, INT8U Pixel_Lbyte, INT8U Pixel_Hbyte);<br />LCD上显示一个点的函数,这个需要外部来提供,而且LCD的初始化必须完成后才能使用。<br />extern void EdbgOutputDebugString(const unsigned char *sz, ...);<br />Debug输出,没什么用,你可以关闭。<br /><br />对外函数接口<br />void JpegFileDecode(void)<br /><br />想换个图片?<br />用jpeg2code.exe把print.jpg转换诚print.txt,然后提到Jpeg_decode.c中的内容吧。<br /><br />如果想XP下编译DECODE.C 找DosBox模拟真实的DOS环境,找TC在上面编译吧。<br /> <br />liandao<br />Email:lycld@163.com<br />2008/01/24<br />现在路径:<br />https://bbs.21ic.com/upfiles/img/20081/2008124134239130.rar<br /><br />https://bbs.21ic.com/upfiles/img/20081/2008124134239130.rar<br /><br />https://bbs.21ic.com/club/bbs/list.asp?boardid=11&t=2841709&tp=%u4E00%u4E2A700%u884C%u4EE3%u7801%u5B8C%u6210%u7684Jpeg%u56FE%u7247%u89E3%u538B%u6E90%u7801
|