如何使用标准的lib c ++或c使用windows.h等将file.bmp放到数组中
编辑 我想让bmp颜色更改数组并使用标准库
放入bmp答案 0 :(得分:5)
使用二进制流:
#include <fstream>
char buffer[100];
ifstream myFile ("myImage.bmp", ios::in | ios::binary);
myFile.read (buffer, 100);
myFile.close();
然而,如果你坚持这样做,解析它将会有点棘手。我建议您研究一个通用的C ++图像库,例如boost GIL(不支持bmp)或this open source bmp library。
如果您无法使用任何第三方或特定于操作系统的库,则必须自行解析数据。 C ++标准库不包含任何可以为您执行此操作的内容。您必须首先熟悉BMP结构。 Wikipedia's article对此有很好的描述。
答案 1 :(得分:0)
File f = new File(fileName);
//get the file length
//create a buffer big enough.
file.read(buffer, size)...
当然,您可能不太想要数组中的位图文件,因为该数组将包含所有位图标题信息,而不仅仅是颜色映射。
现在如果这是作业(我打赌它是),那么你可以创建一个新的结构,它有一个标题部分和一个“地图”部分..你可以说出标题的大小(我相信标题中有一个变量可以告诉你它有多大。)有了这个变量,你可以很容易地只获取地图数据。
我会尝试使用CBitmap对象,然后深入研究CBitmap的代码并提取所需的位。
抱歉没有提供代码..这些天我不在C / C ++世界,所以它不像以前那么新鲜。
<小时/> 看看bitblt上的文档..它会帮助你改变你的数组..也是一个快速的谷歌搜索,你可以找到大部分的。 http://www.vbforums.com/showthread.php?t=261522是我对位图的第一次打击 How to change, modify, cut and swap pixels from BITMAP有点落在页面上,但仍然是.. google first,SO last。