创建BMp文件时的问题,请教高手

[复制链接]
2490|3
 楼主| newdsd 发表于 2007-6-8 10:22 | 显示全部楼层 |阅读模式
8bit灰度图,写入色彩表的时候,总是会在第0x0A个色彩数据处写入0x0D:<br />本来是0x0A&nbsp;0x0A&nbsp;0x0A&nbsp;0x00数据,它总是给我写成是0x0D&nbsp;0x0A&nbsp;0x0D&nbsp;0x0A&nbsp;0x0D&nbsp;0x0A&nbsp;0x00,活生生的给我加了3个byte,请问原因或解决方法?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*pFile=fopen(&quot;open.bmp&quot;,&quot;a&quot;);//打开文件<br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(PBITMAPFILEHEADER,1,14,pFile);//写入文件头<br />//&nbsp;&nbsp;&nbsp;&nbsp;fflush(pFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(PBITMAPINFOHEADER,1,40,pFile);//写入信息头<br />//&nbsp;&nbsp;&nbsp;&nbsp;fflush(pFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(PixelCol,4,256,pFile);//写入彩色表<br />//&nbsp;&nbsp;&nbsp;&nbsp;fflush(pFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;fwrite(PicData,640,480,pFile);//写入图片数据<br />&nbsp;&nbsp;&nbsp;&nbsp;fclose(pFile);//结束文件
 楼主| newdsd 发表于 2007-6-8 10:36 | 显示全部楼层

忘了说了

编译环境VC++6.0,MFC框架程序
平常人 发表于 2007-6-8 22:37 | 显示全部楼层

要用二进制类型打开文件,不能用文本类型

fopen的第二个参数mode要用b而不能用t,具体用法查查文档吧,我也记不清了。<br /><br />或者用OpenFile,&nbsp;ReadFile,&nbsp;WriteFile;<br /><br />再简单点用open,read,&nbsp;write<br /><br />当然CFile最省事!
high 发表于 2007-6-8 22:48 | 显示全部楼层

自动补齐回车换行


恰好0d&nbsp;0a.<br />该是有些系统会这样,有些不会。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

34

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部