CCS+C6678LE开发记录05:编译并使用开源JPEG图像(解)压缩库libjpeg
来源:互联网 发布:pdf免费编辑软件 编辑:程序博客网 时间:2024/05/28 06:08
憋了这么久终于要爆发了。
上次解决了BMP图片读取的问题,这一次想解决读取JPEG图片的问题,本来打算自己新造一个轮子的,
但是既然已经有了libjpeg为何不尝试移植呢?话说这次真的移植成功了!
废话不多说,就列出具体步骤吧。
首先是准备libjpeg的源码(删除所有不必要的文件),我这里有一份整理好的源码压缩包,下载链接
http://download.csdn.net/detail/von_ryan_hack/8317245
然后打开CCS新建项目
设置目标平台为TMS320C6678
项目名称libjpeg
点击[ Next > ] 弹出对话框,展开[ Advanced Settings ]
选择Output type为Static Library
项目模板为Empty Project
在项目上右键菜单选择添加文件
浏览libjpeg源码文件夹,[Add Files...]添加文件(全选)
提示,选择【复制文件】即可
编译类型默认为Debug,如需调整,可在项目右键设置
或者打开设置对话框,选择 [Manage Configurations...]
选择Release并【Set Active】
接下来执行[Project]-->[Build All]即可
编译完成后请将输出文件夹(Debug或Release文件夹)下的libjpeg.lib
和jconfig.h jmorecfg.h jpeglib.h这写文件拷贝出来以供其他项目使用。
下面给出一个应用示例
新建项目(可参考这篇文章http://blog.csdn.net/fengyhack/article/details/41945029)
设置的时候注意添加libjpeg.lib以及jconfig.h; jmorecfg.h; jpeglib.h这几个文件
添加文件后,打开项目属性设置对话框
浏览Workspace选择刚才添加的libjpeg.lib文件
然后确定
接下来贴上示例的源代码main.c
(参考http://blog.csdn.net/fengyhack/article/details/42239807)
#include <stdio.h>#include <stdlib.h>#include "jpeglib.h"typedef unsigned char BYTE;int main(void){char* szFileName = "F:\\Images\\Snapshot\\000.jpg";struct jpeg_decompress_struct cinfo;struct jpeg_error_mgr jerr;// STEP 1: StdErrorprintf("\n-----------------------------------\n");cinfo.err = jpeg_std_error(&jerr);// STEP 2: Createprintf("Create decompress information.\n");jpeg_create_decompress(&cinfo);FILE* pf = fopen(szFileName, "rb");if (pf != NULL){// STEP 3: IOprintf("Attach input file.\n");jpeg_stdio_src(&cinfo, pf);// STEP 4: Headerprintf("Read header information.\n");jpeg_read_header(&cinfo, TRUE);long width=cinfo.image_width;long height=cinfo.image_height;long channels=cinfo.num_components;printf("Image size information:\n%d*%d*%d(width*height*channel)\n",width,height,channels);long bytes = width*height*channels;printf("Allocate %d bytes memory:",bytes);BYTE* data = (BYTE*)malloc(bytes);int line=0;if (data != NULL){printf("OK.\nPrepare to decompress the image...\n");// STEP 5: Startjpeg_start_decompress(&cinfo);JSAMPROW row_pointer[1];// STEP 6: ReadScanprintf("Scan lines...\n");while (cinfo.output_scanline < cinfo.output_height){row_pointer[0] = &data[(cinfo.output_height - cinfo.output_scanline - 1)*cinfo.image_width*cinfo.num_components];jpeg_read_scanlines(&cinfo, row_pointer, 1);++line;if(line%100==0){printf("Current line: %03d\n",line);}}// STEP 7: Finishjpeg_finish_decompress(&cinfo);printf("Decompression finished.\n");// Do something with// BYTE data[] here// and then release itfree(data);}else{printf("FAILED.\n");}// STEP 8: Destroyjpeg_destroy_decompress(&cinfo);fclose(pf);}else{printf("Failed to open \'%s\'\n", szFileName);}printf("Test PASSED.\n");return 0;}
运行时输出截图如下
最后附上适用于C6678的libjpeg库及相应头文件的下载链接
http://download.csdn.net/detail/von_ryan_hack/8317241
本文原创,博文地址
http://blog.csdn.net/fengyhack/article/details/42295323
- CCS+C6678LE开发记录05:编译并使用开源JPEG图像(解)压缩库libjpeg
- 开源JPEG图像(解)压缩库libjpeg的编译与使用示例(以VS2010为例)
- CCS+C6678LE开发记录10:(图像)数据处理与传输框架
- CCS+C6678LE开发记录02:CCS的安装
- CCS+C6678LE开发记录13:多核协作图像处理demo测试
- CCS+C6678LE开发记录01:开箱图赏
- CCS+C6678LE开发记录03:常规入门HeloWorld
- CCS+C6678LE开发记录04:编写CMD文件+读取Bitmap
- CCS+C6678LE开发记录06:以太网接口测试
- CCS+C6678LE开发记录07:DSP网页测试
- CCS+C6678LE开发记录11:多核协作(IPC)入门
- CCS+C6678LE开发记录12:UIA组件的安装
- CCS+C6678LE开发记录15:多核协作(OpenMP)示例探索
- CCS+C6678LE开发记录17:多核协作(OpenMP)示例更新
- 快速jpeg压缩与解压,libjpeg库的使用
- 使用libjpeg进行JPEG图像解码
- 使用libjpeg进行JPEG图像解码
- libjpeg-turbo解压与压缩JPEG图像原理
- POJ 1949
- jQuery 选择器大全
- Binary Tree Inorder Traversal (Java)
- 第三方集成那些事 - 吐槽篇
- 如何隐藏table的左/右/上/下边框
- CCS+C6678LE开发记录05:编译并使用开源JPEG图像(解)压缩库libjpeg
- Phonegap解决错误:Error initializing Cordova:Class not found
- PHP反射机制实现动态代理的代码
- mysqldump: Got errno 28 on write
- Android TextView相关属性
- M*LMM缩略图文件管理模式模块开发(一个含有listview和gridview浏览模式的文件管理器)
- CSDN精选Android开发博客
- Linux线程-pthread_kill
- 《一见》采访超级表格创始人陈坤极