- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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( )
您可能关注的文档
- 苏教版语文七年级下册《柳叶儿》优良有效课件:27页.ppt
- 华为的营销策略(全新白金版).ppt
- 微笑礼仪培训PPT.ppt
- 千金药业(600479)价值投资报告稳健成长 点滴积累.pdf
- 全国新课标Ⅰ卷高考密卷历史试题及答案.doc
- 《网络上的人际交往 课件》初中思想品德人教课标版八年级上册课件33298geo2k..ppt
- 弘扬水利精神 传承水利文化设施.ppt
- 9[1].计算机多媒体技术--计算机应用基础统考试题库及答案.doc
- Research and development and intra-industry spillovers_ An empirical application of dynamic duality英文精品课件.pdf
- Remote Sensing amp; GIS英文精品课件.pdf
文档评论(0)