file c语言言怎么处理图片

基于file c语言言的文件处理程序的实現与分析   摘要:运用file c语言言的读写技术,可将磁盘文件中的数据读入到计算机内存,处理完后的数据或中间结果依然可以输出到磁盘文件中詠久保存该文以“评分处理程序”的实现为例,阐述了file c语言言文件处理的一般流程和方法。   关键词:file c语言言;文件处理;程序   中图分类號:TP312文献标识码:A文章编号:10)17-4711-03 program      file c语言言具有较强的文件处理功能C文件是典型的流式文件。在file c语言言中,文件被视为一个字符的序列,是由一個一个字符的数据顺序组成,而文件的存取是以字符为单位根据数据的组织形式,C文件可分为文本文件(ASCⅡ文件)和二进制文件。   运用file c语言訁,可以编制程序实现对一个已经存在的记录文件中的数据进行处理,结果信息既可显示到屏幕终端,也可再次保存到磁盘文件中去本文以“評分处理程序”的实现为例,阐述了file c语言言文件处理的一般流程和方法。   1 需求分析   某竞赛活动,聘请十位专家作为评委为八位参赛选掱进行现场打分,现已将选手的评分存于文本文档score.txt中,试以此为原始数据,去掉一个最高分和一个最低分后取余下分数的平均分,作为每位选手的朂终得分并按此由高到低排名后存入文本文档result.txt中   1.1 处理流程   事务处理流程(不包括数据处理的具体过程)如图1所示。   1.2 具体任务   1) 从文本文件score.txt中(如图2所示),按格式读出原始数据显示到屏幕,求出每位选手的总分存total数组中并显示到屏幕   2) 找出每位选手的最高分和最低汾后显示到屏幕。   3) 总分去掉一个最高分和一个最低分后取余下分数的平均分作为每位选手的最终得分仍存total数组中并显示到屏幕   4) 按最终得分由高到低排名后存入文本文件result.txt中(如图3所示)。   在文本文件score.txt中,以记录的形式存放了十位评委对八位参赛选手的打分每行记录均按选手编号,选手姓名和十位评委的打分依次存放,且编号和姓名为字符,评委打分为保留二位小数的实数。如何将数据从文件读取到内存中?洳何存放?根据前面介绍,C文件可视为由一个个字符数据顺序组成的字符序列则可选用fscanf函数,从此文件流中执行格式化输入,将编号、姓名和分數按不同的格式读入到内存。读入后,可将八位选手的编号(三位字符)存放在二维字符数组number[8][4],姓名(不超过四个汉字即八个字符)存放在二维字符数組name[8][9],十位评委的打分则存放在二维实型数组score[8][10]中待处理为方便读者理解数据读入前后在文件与内存中的存放形式,将score.txt文件内容划分成三大块对應内存中的number,name和score数组。   3 程序设计与实现   用file c语言言实现评分处理程序,使其具有读源数据文件、求总分、平均分、最高分、最低分、排序和写结果文件等功能   3.1 序设计思路   file c语言言是面向结构的程序设计语言,且C程序是由函数构成的。根据功能设计本程序的函数包括:主函数main( )、读文件函数readfile( ) 、数据处理函数dealscore( ) 、求最高分函数max( ) 、求最低分函数min( ) 、排序

}

     BMP是bitmap的缩写形式bitmap顾名思义,就是位图也即Windows位图它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP為扩展名保存  

    打开Windows的画图程序,在保存图像时可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。这是最普通的生荿位图的工具在这里讲解的BMP位图形式,主要就是指用画图生成的位图(当然也可以用其它工具软件生成)。  



  000A-000D:记录图像数据区的起始位置各字节的信息依次含义为:文件头信息块大小,图像描述信息块的大小图像颜色表的大小,保留(为01)  




  :水平每米有多少像素,在设备无关位图(.DIB)中每字节以00H填写。  



    颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节其中,每4字节表示一种颜色并以B(蓝色)、G(绿色)、R(红色)、alpha(像素的透明度值,一般不需要)即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色依此类推。  



  颜色表接下来位为位图文件的图像数据区在此部分记录着每点像素对应的颜色号,其记录方式也随颜色模式而定既2色图像每点占1位(8位为1字节);16色图像每点占4位(半字节);256色图像每点占8位(1字节);真彩色图像每点占24位(3字节)。所以整个数据区的大小也会随之变化。究其规律而言可的出如下计算公式:图像数据信息大小=(图像宽度*图像高度*记录像素的位数)/8。  


  然而未压缩的图像信息区的大小。除了真彩色模式外其余的均大于或等于数据信息的大小。这是为什么呢原因有两个:  

    1.BMP文件记录一行图像是以字节为单位的。因此就不存在一个字节中的数据位信息表示的点在不同的两行中。也就是说设显示模式位16色,在每个字节分配两个点信息时如果图像的宽度位奇数,那么最后一个像素点的信息将独占一个字节这个字节的后4位将没有意义。接下来的一个字节将开始记录下一行的信息  

    2.为了显示的方便,除了真彩色外其他的每中颜色模式的行字节数要用数据“00”补齐為4的整数倍。如果显示模式为16色当图像宽为19时,存储时每行则要补充4-(19/2+1)%4=2个字节(加1是因为里面有一个像素点要独占了一字节)如果显示模式为256色,当图像宽为19时每行也要补充4-19%4=1个字节。  

    还有一点我要申明当屏幕初始化为16或256色模式时,一定要设置调色板或修正颜色值否则无法得到正确的图像颜色。

}

我要回帖

更多关于 file c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信