fstream中建立bmp文件总是不能打开的一个处理办法
2014-04-12 19:38
267 查看
std::fstream newbmp0("d:/haha.bmp",std::ios_base::in|std::ios_base::out|std::ios::app);
newbmp0.close();
std::fstream newbmp("d:/haha.bmp",std::ios_base::in|std::ios_base::out|std::ios::binary);
newbmp.seekg(std::ios::beg);
newbmp.write(BMP_header,54);//
int newwidth=400,newheight=400;//bmp位图文件的宽度和高度
newbmp.seekg(0x0012,std::ios_base::beg);
newbmp.write((char*)(&newwidth),sizeof(int));
newbmp.seekg(0x0016,std::ios_base::beg);
newbmp.write((char*)(&newheight),4);//头文件搞定了
大学毕业设计就是关于像素拼接的程序,当时就不能用c++代码所创建的文件操作,因为创建的文件打不开,即使把头文件统统复制给新文件不加修改,还是不能成为一个完整的bmp位图文件。
这次我想用opengl实现将opengl里面的图像保存,其保存就是用c++代码实现,出现了同样的问题。我使用ios::app可以打开文件,然后用ios::binary模式,默认好像是字符模式,就可以使bmp文件变得完整,就可以打开,具体原因我也不清楚。。。等以后懂了再来编辑,先写到这一步。
newbmp0.close();
std::fstream newbmp("d:/haha.bmp",std::ios_base::in|std::ios_base::out|std::ios::binary);
newbmp.seekg(std::ios::beg);
newbmp.write(BMP_header,54);//
int newwidth=400,newheight=400;//bmp位图文件的宽度和高度
newbmp.seekg(0x0012,std::ios_base::beg);
newbmp.write((char*)(&newwidth),sizeof(int));
newbmp.seekg(0x0016,std::ios_base::beg);
newbmp.write((char*)(&newheight),4);//头文件搞定了
大学毕业设计就是关于像素拼接的程序,当时就不能用c++代码所创建的文件操作,因为创建的文件打不开,即使把头文件统统复制给新文件不加修改,还是不能成为一个完整的bmp位图文件。
这次我想用opengl实现将opengl里面的图像保存,其保存就是用c++代码实现,出现了同样的问题。我使用ios::app可以打开文件,然后用ios::binary模式,默认好像是字符模式,就可以使bmp文件变得完整,就可以打开,具体原因我也不清楚。。。等以后懂了再来编辑,先写到这一步。
相关文章推荐
- 建立一个不能打开的文件(占坑)---C语言高级API调用
- 4000 建立一个不能打开的文件(占坑)---C语言高级API调用
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】
- 图像处理 基于Visual C++编程 学习笔记 (1)建立MFC工程,打开bmp文件
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法 2010-9-16 15:01
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法
- VBOX不能为虚拟电脑打开一个新的任务解决办法-待验证右键VirtualBox图标----属性--打开文件所在位置(默认位置为:C:\Program Files\Oracle\VirtualBox\d
- 针对SSRS2005导出到Excel文件不能命名sheet的处理办法
- 不能打开远程帮助文件的解决办法
- Linux修改文件时候出现崩溃,产生了一个.swap交换文件 的处理办法
- 关于MMC不能打开文件C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
- VisualStudio编译项目时,提示bin目录和obj目录下的文件不能写的错误处理的解决办法
- 用VS2005打开一个.NET2.0方案,里面有几个工程和一个网站,提示网站的项目.csproj文件无法打开:“此安装不支持该项目类型”,的解决办法。
- 关于MMC不能打开文件C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQL Server Enterprise Manager.MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
- 不能打开文件:mk:@MSITStore:路径[cannot open the file mk@MSITstore:路径]解决办法 转
- eclipse打开一个文件后闪退(注意不是启动就闪退,是启动后打开某些类或者配置文件会闪退)解决办法
- 安装OFFICE提示“windows installer服务不能更新一个或多个受保护的windows文件”解决办法
- 虚拟机无法打开磁盘 "或者某一个快照所依赖的磁盘 原因:未能锁定文件"的解决办法
- WINXP+IIS5.1不能打开aspx文件的的问题之解决办法(一般为IIS安装顺序)
- Ubuntu 下 VirtualBox “不能为虚拟电脑 * 打开一个新任务”的解决办法