| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3754 人关注过本帖
标题:如何把内存中的位图像素数据 写入文件
只看楼主 加入收藏
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
 问题点数:0 回复次数:7 
如何把内存中的位图像素数据 写入文件


给出我的部分代码


HANDLE fh;
//创建位图文件
fh=CreateFile(lpFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (fh==INVALID_HANDLE_VALUE)
return FALSE;
// 设置位图文件头
bmfHdr.bfType = 0x4D42; // "BM"
dwDIBSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize;
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER)+(DWORD)sizeof(BITMAPINFOHEADER)+dwPaletteSize;
offbit=bmfHdr.bfOffBits;

// 写入位图文件头
WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
// 写入位图文件其余内容WriteFile(fh, (LPSTR)lpbi, sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize, &dwWritten, NULL);

以上操作把位图文件头 位图信息头 和颜色表 都写到文件了, 但是我只想把位图像素数据写入文件,就是不把(图文件头 位图信息头 和颜色表)写到文件, 当我打开文件的时候只显示位图像素数据, 请各位指点


搜索更多相关主题的帖子: 内存 位图 像素 数据 文件 
2007-11-14 11:15
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
那就只把调色板与数据写入.

=×&D o I p R e E n C g T l X&×=
2007-11-14 11:38
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 

楼上说的数据 是值的哪块 , 能明确指出来么
WriteFile(fh, (LPSTR)lpbi, sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize, &dwWritten, NULL);
具体如何改哪个参数


兴趣和爱好是我追求的方向
2007-11-14 11:57
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
首先你要有一个调色板,数据是根据调色板的索引来得到的.
实在是没调色板就自己建.

=×&D o I p R e E n C g T l X&×=
2007-11-14 12:01
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
以上说的是非真彩色位图.

=×&D o I p R e E n C g T l X&×=
2007-11-14 12:02
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
我 有调色板句柄的 然后呢? 我位图的信息其实已经建好了 什么都有 ,就是不知道把哪里写如文件

兴趣和爱好是我追求的方向
2007-11-14 12:07
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

比如以下是一个数据部分.
char chData[128][128];
FillMemory(&chData, sizeof(chData), 0);
for(int i = 0; i < 128; i++)
{
for(int j = 0; j < 128; j++)
{
chData[i][j] = i*8;
}
}

...
...
// 打开输出文件
...
...

// 写入到文件
file.write(...); // 调色板
file.write(...); // 数据


=×&D o I p R e E n C g T l X&×=
2007-11-14 12:15
ttzixi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-10-22
收藏
得分:0 
楼主,不知道您的问题解决了没有?想请你赐教
2009-10-22 21:38
快速回复:如何把内存中的位图像素数据 写入文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016687 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved