



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习资料收集于网络,仅供参考三、解压缩步骤解压缩步骤与压缩步骤非常相似,只是解压缩对象为jpeg_decompress_struct(解压都是围绕该结构的实例进行的!)类型,步骤如下:1、声明并初始化解压缩对象,同时指定错误信息管理器struct jpeg_decompress_struct cinfo;struct jpeg_error_mgr jerr;/jpeg错误信息管理器cinfo.err = jpeg_std_error(&jerr);/让错误信息管理器和cinfo关联jpeg_create_decompress(&cinfo);/初始化cinfo2、打开jpg图像文件,并指定为解压缩对象的源文件FILE *f = fopen(“/me.jpg”,rb);/打开要解压缩的jpeg文件if (f=NULL) printf(Open file error!/n); return;/jpeg_stdio_src(&cinfo, f);/让jpeg的解压缩对象cinfo和文件f关联3、读取图像信息jpeg_read_header(&cinfo, TRUE);/读取图像信息对cinfo进行一些初始化4、开始解压缩cinfo.out_color_space=JCS_RGB;/让生成24位RGB格式jpeg_start_decompress(&cinfo);/开始解压缩unsigned char *buffer=(unsigned char*)malloc(cinfo-output_width*3); unsigned char (*pLine)3=(unsigned char (*)3)buffer;/cinfo.output_scanline初始值为0,每执行一次jpeg_read_scanlines(&cinfo,&buffer , 1),会自动加1,表示当前待解压的行!while (cinfo.output_scanline cinfo.output_height) jpeg_read_scanlines(&cinfo,&buffer , 1);/对该行颜色数据进行处理:你可以选择把该行数据写到lcd显存的备用缓冲区:主要不要越界!/int r,g,b/r=pLine02;g=pLine01;b=pLine00; 获取该行第0列的红绿蓝jpeg_finish_decompress(&cinfo);6、释放资源jpeg_destroy_decompress(&cinfo);fclose(f);好了,利用IJG JPEG Library进行图像压缩就介绍到这里,希望对大家有所帮助,实例代码已经实现了图像的压缩和解压缩的全部功能解压缩流程:为JPEG对象分配空间并初始化指定解压缩数据源获取文件信息为解压缩设定参数,包括图像大小,颜色空间开始解压缩取出数据解压缩完毕释放资源1. 为JPEG对象分配空间并初始化,解压缩过程中使用的JPEG对象是一个jpeg_decompress_struct的结构体。同时还需要定义一个用于错误处理的结构体对象,IJG中标准的错误结构体是jpeg_error_mgr。structjpeg_decompress_structcinfo;structjpeg_error_mgrjerr;然后是将错误处理结构对象绑定在JPEG对象上。cinfo.err = jpeg_std_error(&jerr); 初始化cinfo结构。jpeg_create_decompress(&cinfo);2.指定解压缩数据源,利用标准C中的文件指针传递要打开的jpg文件。FILE *infile;if(infile= fopen(sample.jpg,rb) = NULL)return0;jpeg_stdio_src(&cinfo, infile);3. 获取文件信息,IJG将图像的缺省信息填充到cinfo结构中以便程序使用。(void)jpeg_read_header(&cinfo, TRUE);此时,常见的可用信息包括图像的宽cinfo.image_width,高cinfo.image_height,色彩空间cinfo.jpeg_color_space,颜色通道数cinfo.num_components等。4. 为解压缩设定参数,在完成jpeg_read_header调用后,开始解压缩之前就可以进行解压缩参数的设定,也就是为cinfo结构的成员赋值。比如可以设定解出来的图像的大小,也就是与原图的比例。使用scale_num和scale_denom两个参数,解出来的图像大小就是scale_num/scale_denom,但是IJG当前仅支持1/1, 1/2, 1/4,和1/8这几种缩小比例。比如要取得1/2原图的图像,需要如下设定: cinfo.scale_num=1; cinfo.scale_denom=2;也可以设定输出图像的色彩空间,即cinfo.out_color_space,可以把一个原本彩色的图像由真彩色JCS_RGB变为灰度JCS_GRAYSCALE。如: cinfo.out_color_space=JCS_GRAYSCALE;5. 开始解压缩根据设定的解压缩参数进行图像解压缩操作。 (void)jpeg_start_decompress(&cinfo);在完成解压缩操作后,IJG就会将解压后的图像信息填充至cinfo结构中。比如,输出图像宽度cinfo.output_width,输出图像高度cinfo.output_height,每个像素中的颜色通道数cinfo.output_components(比如灰度为1,全彩色为3)等。6. 取出数据,解开的数据是按照行取出的,数据像素按照scanline来存储,scanline是从左到右,从上到下的顺序,每个像素对应的各颜色或灰度通道数据是依次存储,比如一个24-bitRGB真彩色的图像中,一个scanline中的数据存储模式是R,G,B,R,G,B,R,G,B,.,每条scanline是一个JSAMPLE类型的数组,一般来说就是unsigned char,定义于jmorecfg.h中。 unsigned char *buffer=(unsigned char*)malloc(cinfo.output_width*3); while(cinfo.output_scanline cinfo.output_height) (void)jpeg_read_sca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业种植合作开发与责任协议
- 成都新楼盘阴阳合同(标准版)
- 崇仁县2025年公开招聘初、高中编外合同制教师【86人】考试参考试题及答案解析
- 2025年长春市事业单位公开招聘工作人员(含专项招聘高校毕业生)(7号)(356人)考试模拟试题及答案解析
- 2025重庆大学管理科学与房地产学院劳务派遣工作人员招聘1人考试参考题库及答案解析
- 2025内蒙古交通投资(集团)有限责任公司所属天骄航空有限公司招聘70人考试参考题库及答案解析
- 2025年8月广东东莞东坑镇公办幼儿园招聘老师8人备考考试试题及答案解析
- 2025年安庆太湖县部分县属国有企业公开招聘工作人员23名备考考试试题及答案解析
- 2025年8月浙江嘉兴市海宁市市属公办幼儿园招聘合同制教职工招聘30人备考考试题库附答案解析
- 2025新疆交通职业技术大学招聘编制外聘用人员(24人)考试模拟试题及答案解析
- DB61-T 1587-2022家政服务员沟通服务规范
- 乳铁蛋白内部培训课件
- 《艺术学原理》第一讲艺术学原理概述版剖析课件
- 万用表使用方法课件
- 教学课件-现代酒店管理基础
- 日语作文細やかな(细小)幸せにも感謝の気持ち 讲义-高考日语二轮复习
- 2009-2022历年河南省郑州市市属事业单位公开招聘考试《行政职业能力测试》笔试试题含答案带详解2022-2023上岸资料汇编3
- 新老物业移交表格(全套)
- 改装课件b737增压系统终定版
- 中国石化集团公司油气田企业清洁生产评价指标体系
- 改造工程电气工程施工组织设计方案
评论
0/150
提交评论