【C++】WAV BMP文件读取 程序报告.pdf

【C++】WAV BMP文件读取 程序报告.pdf

ID:52925850

大小:514.97 KB

页数:5页

时间:2020-04-01

【C++】WAV BMP文件读取 程序报告.pdf_第1页
【C++】WAV BMP文件读取 程序报告.pdf_第2页
【C++】WAV BMP文件读取 程序报告.pdf_第3页
【C++】WAV BMP文件读取 程序报告.pdf_第4页
【C++】WAV BMP文件读取 程序报告.pdf_第5页
资源描述:

《【C++】WAV BMP文件读取 程序报告.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、2011级树莓技术数字媒体认识实践报告Bakane数字媒体认识实践报告1功能描述1.1基本功能文件头数据读取:输入文件名或存储路径,判断格式。若为WAV或BMP,则将文件头信息显示在屏幕上并存储至data.txt。1.2扩展功能(只支持24位BMP文件)(1)图像裁剪:可选择裁剪图像的上半部分或左半部分。(2)添加水印:可选颜色:粉、绿、黄、自定义。水印为5px边框及左下角猫爪图案。2知识运用水印:粉色边框和左下角猫爪2.1WAV文件:数据结构体为WAVEFORMATEX,可以用fread()函数读取文件头的完整

2、数据。实验所要求的几个数据在结构体中分别是:nChannels(声道数);nSamplesPerSec(采样率);wBitsPerSample(采样位数)验证是否为WAV:从08H起读四个char,能得到“WAVE”;2.2BMP文件:因为时间关系,选择了着重处理BMP文件【位图文件头】结构体为BITMAPFILEHEADER【位图信息头】结构体为BITMAPINFOHEADER【颜色表】24位图没有颜色表,略过...【像素数据】对图像的修改在这部分进行当biHeight为正值时,数据为从下至上逐行读取;而对于2

3、4位BMP,每个像素所占空间为3字节(每字节分别代表R、G、B的数值)。因此在进行处理时,只要计算出需要处理的像素位置即可。将以上所有数据依次读入后,再按次序写入新文件,就能生成可执行的BMP文件。2011级树莓技术数字媒体认识实践报告Bakane3程序模块包含三个源文件:“Akane_MediaPro.cpp”“Akane_viewData.cpp”“Akane_BMPaw.cpp”“Akane_MediaPro.cpp”voidmain():起始的菜单,按1、2、3,分别调用viewData(),BMClip

4、(),BMPaw()进入三种功能,功能运行完毕后返回菜单,按0退出程序(return)“Akane_viewData.cpp”inttrans(unsignedchar*ch,inta,intn):解析数据。将ch中偏移量为a,长度为n字节的无符号字符读取为十进制整型数。(功能类似fread()、fstream.read())voidviewData():输入文件名或路径,判断文件格式:若08H处为WAVE字符串则判定为WAV文件,若00H处为BM则判定为BMP文件,针对文件格式分别调用trans()读取数据,显

5、示在屏幕上并存入”data.txt”。若文件不存在则提示重新输入。若文件存在但格式错误,则提示格式无法读取。结束后按任意键return。“Akane_BMPaw.cpp”基础函数:boolopenBmp(char*bmpName):判断文件格式。为24位BMP图像则返回1,否则返回0.boolreadBmp(char*bmpName):读取文件数据。将信息头和位图数据读取至全局变量中。boolsaveBmp(........):写入新文件。将数据存入新文件。(形参表中为所有可更改的数据)功能一:voidBMCli

6、p():①输入文件名或路径,调用openBmp()判断是否为24位BMP,直到格式正确。②调用readBmp()读取数据。选择裁剪方式(上半or左半),计算数据,调用saveBmp()将修改后的数据写入新图像,并将图像自动打开。循环②直到选择“0.返回”时return.2011级树莓技术数字媒体认识实践报告Bakane功能二:voidprintBlack(intL,introw1,introw2,intR,intG,intB):绘图用。将某行的某段像素上色。voidprintLOGO(intR=0,intG=0,

7、intB=0):添加水印。计算出5px边框和水印所在的数据位置,根据形参表中的RGB数值修改颜色,调用printBlack()函数绘制猫爪LOGO。voidinputRGB(int&R,int&G,int&B):自定义颜色。提示输入六位制RGB色,判断输入格式。若输入错误则提示重新输入。voidBMPaw():①输入文件名或路径,调用openBmp()判断是否为24位BMP,直到格式正确。②调用readBmp()读取数据。可选择三种预设颜色,若选自定义颜色则调用inputRGB()输入颜色,调用printLOGO

8、()将水印写入数据。调用saveBmp()将修改后的数据写入新图像,并将图像自动打开。循环②直到选择“0.返回”时return.4功能测试(1)主菜单本次测试用图片(2)基础功能:查看文件信息判断是WAV还是BMP,输出信息两者都不是则...卖萌2011级树莓技术数字媒体认识实践报告Bakane(3)扩展功能:裁剪图片【上图】文件的三重验证【右上】验证成功后显示子菜单【右

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。