WAV BMP文件读取 程序报告.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字媒体认识实践报告 功能描述 1.基本功能:文件头数据读取 >> 输入文件名或存储路径,判断格式,若为WAV或BMP,则将信息显示在屏幕上并存储至data.txt。 2.扩展功能:(只支持24位BMP文件) (1)图像裁剪: >> 可选择裁剪图像的上半部分或左半部分。 (2)添加水印: >> 可选择三种预设颜色:粉、绿、黄。 或自定义颜色。 >> 水印为 5px边框及左下角猫爪图案 >> 可重复选择。 水印:粉色边框和左下角猫爪 水印:粉色边框和左下角猫爪 知识运用 1.WAV文件: 数据结构体为WAVEFORMATEX,可以用fread()函数读取文件头的完整数据。 实验所要求的几个数据在结构体中分别是: nChannels(声道数);nSamplesPerSec(采样率);wBitsPerSample(采样位数) 验证是否为WAV:从08H起读四个char,能得到’W’, ’A’, ’V’,’ E’; 2.BMP文件: 因为时间关系,选择了着重处理BMP文件 【位图文件头】结构体为BITMAPFILEHEADER 【位图信息头】结构体为BITMAPINFOHEADER 主要用到了:biWidth(宽度); biHeight(高度);biBitCount(像素位数) 【颜色表】因为只处理了24位图,这部分略过... 【像素数据】本程序对此部分进行了大量处理。 当biHeight为正值时,数据为从下至上逐行读取;而对于24位BMP,每个像素所占空间为3字节(每字节分别代表R、G、B的数值)。因此在进行处理时,只要计算出需要处理的像素位置即可。 < 平时做音乐后期时的人声波形 > 两段之间连续的高频率波形是齿音s放大后能看到等距离分布的采样点将以上所有数据依次读入后,再按次序写入新文件,就能生成可执行的BMP文件。 < 平时做音乐后期时的人声波形 > 两段之间连续的高频率波形是齿音s 放大后能看到等距离分布的采样点 程序模块 包含三个源文件: “Akane_MediaPro.cpp” “Akane_viewData.cpp” “Akane_BMPaw.cpp” (主要函数调用关系见右图 → ) ”Akane_MediaPro.cpp” void main( ): 起始的菜单,按1、2、3(直接按键,不用输回车)分别调用viewData(), BMClip( ), BMPaw( )进入三种功能,功能运行完毕后返回菜单,按0退出程序(return) “Akane_viewData.cpp” int trans(unsigned char * ch, int a, int n): 解析数据。将ch中偏移量为a,长度为n字节的无符号字符读取为十进制整型数。 (功能类似fread( )、fstream.read( )) void viewData( ): 输入文件名或路径,判断文件格式: 若08H处为WAVE字符串则判定为WAV文件,若00H处为BM则判定为BMP文件,针对文件格式分别调用trans( )读取数据,显示在屏幕上并存入”data.txt”。 若文件不存在则提示重新输入。 若文件存在但格式错误,则提示格式无法读取。 结束后按任意键return。 “Akane_BMPaw.cpp” 基础函数: bool openBmp(char * bmpName): 判断文件格式。为24位BMP图像则返回1,否则返回0. bool readBmp(char * bmpName): 读取文件数据。将信息头和位图数据读取至全局变量中。 bool saveBmp (........) : 写入新文件。将数据存入新文件。(形参表中为所有可更改的数据) 功能一: void BMClip( ): ①输入文件名或路径,调用openBmp( )判断是否为24位BMP,直到格式正确。 ②调用readBmp( )读取数据。选择裁剪方式(上半or左半),计算数据,调用saveBmp( )将修改后的数据写入新图像,并将图像自动打开。 循环②直到选择“0.返回”时return. 功能二: void printBlack(int L,int row1,int row2,int R,int G,int B): 绘图用。将某行的某段像素上色。 void printLOGO(int R = 0, int G = 0, int B = 0): 添加水印。计算出5px边框和水印所在的数据位置,根据形参表中的RGB数值修改颜色,调用printBlack( )函数绘制猫爪LOGO。 void inputRGB(int & R, int & G, int & B): 自定义颜色。提示输入六位制RGB色,判断输入格式。若输入错误则提示重新输入。 void BMPaw( )

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档