如何用TC在新建的空16位bmp文件中画入一正弦波??熬夜写作业,在线急求

hk0108 2009-05-08 04:06:40
已经知道如何创建新的bmp文件了,只是不知道怎么写入东西,具体而言是如何用TC在新建的空16位bmp文件中画入一正弦波??熬夜写作业,在线急求
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tg15 2009-05-09
  • 打赏
  • 举报
回复
既然你已经用fopen创建了文件,只需要把结构和数据用fwrite写进去就行了

比如,有一个图,只有六个象素,每行三个,共两行,第一行是三个红色(255,0,0),第二行是三个白色(255,255,255)
那么,首先应该确定用什么格式存,如果是24位的,那么,每行数据为((3*24 + 31)/8)/4*4=12个字节。其实不用公式,也可以自己算,每行3个像素,每个像素3个字节,需要的就应该是9个字节,但是:规定每个扫描行必须是4的倍数,故要补齐到12。
一共两行,那么图像数据就是2*12=24个字节,没有调色板,加上头就一共是14+40+24=78个字节。下面给你说这78个字节怎么写到文件中。

1。文件头:
tagBITMAPFILEHEADER head;
head.bfType = 0x424D; //必须是这个值0x42'B' 0x4D'M',表示是BMP位图文件
head.bfSize = 78; // 长度是78个字节
head.bfOffBits = 54; // 位图数据开始的字节,因为没有调色板,长度就是14+40

fwrite(&head, sizeof(tagBITMAPFILEHEADER), 1, file); // 这样就把头写到文件中了。也可以fwrite(&head, 1, 14, file);自己去想为什么。

2。位图头:
tagBITMAPINFOHEADER bmpHead;
同样为结构赋值后

fwrite(&bmpHead, sizeof(tagBITMAPINFOHEADER), 1, file);

因为没有调色板,如果有,就同样的方式写入即可。

3。数据:
关键在这里:上面说的,每行数据是12字节,故可以弄一个char data[12];
分别为每行赋值,然后写入文件。
从最后一行开始:
前面讲了:“第二行是三个白色(255,255,255)”,即数据是 255, 255, 255, 255, 255, 255, 255, 255, 255,最后三位补0
那么 data这个数组里面的值就是前9个255,后三个0。

然后写入:
fwrite(data, 1, 12, file);

“第一行是三个红色(255,0,0)”。即数据是: 0, 0, 255, 0, 0, 255, 0, 0, 255, (注意:顺序是反的第一个是蓝,最后个是红)最后三位补0

然后写入:
fwrite(data, 1, 12, file);

这样,这个只有六个像素的位图就OK了。



不知道这样你明白没有?
你得知道你的数据是怎么样的,也就是你的图是怎么样的,知道了,就能写进去了。。
hk0108 2009-05-08
  • 打赏
  • 举报
回复
7楼的老师,上面的东西我大致理解了,我已经定义了结构体,设定了结构体变量中的各个变量值,并且已经用fopen创建了一个bmp文件,现在只是不知道怎么写东西进bmp文件,您能给出个具体的语句吗??写个颜色可以自己设定的直线就成
tg15 2009-05-08
  • 打赏
  • 举报
回复
关键是你要搞懂bmp图像的结构。
首先是一个文件头
struct tagBITMAPFILEHEADER {
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
}
接着是一个位图信息
struct tagBITMAPINFOHEADER{
unsigned long biSize; // 文件大小
long biWidth; // 图像宽度(像素)
long biHeight; // 图像高度(像素)
unsigned short biPlanes;
unsigned short biBitCount; // 每像素占用位(类型),1位=单色,4位=16色,8位=256色,24位=真色彩
unsigned long biCompression;
unsigned long biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
}

接着是调色板,根据类型不一样,调色板个数不一样。单色2个,16色16个,256色256个,24位的无。
struct tagRGBQUAD {
unsigned char rgbBlue; // 蓝
unsigned char rgbGreen; // 绿
unsigned char rgbRed; // 红
unsigned char rgbReserved; // 保留
}


然后开始是数据。
根据每像素占用空间不一样,数据不一样。
24位的3个字节一像素依次是蓝绿红。。
其他的数据表示调色板的色。

注意:数据是从最下一行向上的。
另外,每行的数据必须是4的倍数,如果每行完成后不足,要补0。
下面的公式可以得出一行数据的大小。
((bh.biWidth * bh.biBitCount + 31) / 8) / 4 * 4

数据写完,OK,位图文件就产生了。。
hk0108 2009-05-08
  • 打赏
  • 举报
回复
摸索了一天,也没有弄明白怎么写进去~~~~~继续抱有希望的等待高手的指点~~~~
hk0108 2009-05-08
  • 打赏
  • 举报
回复
3楼,听你的,我明早来学习
hk0108 2009-05-08
  • 打赏
  • 举报
回复
对了,要求背景色,波形颜色的设置~
mahatmaff4 2009-05-08
  • 打赏
  • 举报
回复
高手也是人要睡觉呀~~早点休息明天起来看答案呀。
hk0108 2009-05-08
  • 打赏
  • 举报
回复
新人,没分,请高手多多谅解~~
hk0108 2009-05-08
  • 打赏
  • 举报
回复
焦急的等待高手~~~
内容概要:本文档详细介绍了“南方数码房地一体内外业软件”的操作流程,涵盖从数据准备、外业调查、内外业数据对接,到内业数据处理与成果输出的完整工作链。主要包括调查底图制作(支持DWG、MDB、SHP及倾斜三维模型等多种数据源)、导出外业IDB工程文件、平板端外业调查(宗地与房屋核实、电子签章表确认、照片导出)、内外业数据对接(DB与照片数据导入),以及内业的宗地信息完善、界址属性设置、自然幢生成、房屋面积计算、户属性录入,并最终输出宗地图、房产分户图、各类报表及MDB数据库等成果。; 适合人群:从事农村房地一体权籍调查的测绘、不动产登记及相关地理信息行业的内业处理人员、外业调查员和技术管理人员,需具备基础GIS或CAD操作能力; 使用场景及目标:①指导用户系统完成从原始数据到不动产登记成果的全流程作业;②实现外业调查数据高效采集与内业自动化处理衔接,提升房地一体确权登记工作的标准化与效率; 阅读建议:建议结合实际项目按章节顺序操作,重点关注数据格式转换、IDB工程交互逻辑及成果图输出设置,配合软件界面逐步实践,确保各环节数据完整性与准确性。
内容概要:本文围绕“面向高精度电流控制的PMSM多参数PSO辨识模型研究”,结合Simulink仿真实现,系统探讨了在高性能电机控制背景下,如何利用粒子群优化算法(PSO)对永磁同步电机(PMSM)电流环的关键参数进行多参数协同辨识。研究通过建立PMSM的精确动态数学模型,设计基于PSO的参数辨识框架,实现了对电机电感、电阻、反电动势常数等核心参数的高效在线或离线辨识,有效提升了电流控制的精度与系统鲁棒性。文中详细阐述了PSO算法的实现机制,包括适应度函数构造、参数编码策略与收敛判据,并在Simulink中构建了完整的联合仿真平台,通过大量仿真实验验证了该方法相较于传统辨识技术在准确性、稳定性和适应性方面的显著优势,为高动态性能电机驱动系统的参数获取提供了可靠的技术路径。; 适合人群:自动化、电气工程、控制科学与工程等相关专业的研究生、科研人员及从事高性能电机驱动系统开发的工程师。; 使用场景及目标:①应用于高端制造、新能源汽车、航航天等领域中对电流控制精度要求极高的PMSM控制系统开发;②作为智能优化算法(如PSO)在电机参数辨识领域应用的典型案例,服务于教学演示与学术研究;③为后续开展自适应控制、智能容错控制及多物理场耦合建模等前沿课题提供坚实的参数辨识基础和技术参考。; 阅读建议:读者应具备扎实的电机控制理论基础(如FOC矢量控制、现代控制理论)以及熟练的MATLAB/Simulink仿真能力,建议在学习过程中结合文中的仿真模型,动手复现PSO参数辨识的完整流程,深入分析算法参数设置对辨识结果的影响,从而全面掌握其工程应用精髓。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧