生成一个空白bmp的简单代码-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1235548
  • 博文数量: 76
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 2689
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 12:07
个人简介

樽中酒不空

文章分类

全部博文(76)

文章存档

2020年(4)

2019年(1)

2017年(2)

2016年(2)

2015年(7)

2014年(11)

2013年(13)

2012年(18)

2011年(2)

2010年(16)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2014-05-27 16:32:37

做图像处理时,有时需要临时生成图使用。以下是生成320x240 24位图的一个简单的代码实现:

#define widthbytes(bits) ((dword)(((bits) 31) & (~31)) / 8)

void makebmp()
{
int nsize =abs(long(240 * widthbytes(24 * 320)));
char*  buff = new char[nsize];
memset(buff, 0, nsize);

bitmapinfoheader header;
header.bisize = sizeof(bitmapinfoheader);

header.biwidth = 320;
header.biheight = 240*(-1);
header.bibitcount = 24;
header.bicompression = 0;
header.bisizeimage = 0;
header.biclrimportant = 0;
header.biclrused = 0;
header.bixpelspermeter = 0;
header.biypelspermeter = 0;
header.biplanes = 1;


//3 构造文件
bitmapfileheader bmpfileheader;
handle hfile = null;
dword dwtotalwriten = 0;
dword dwwriten;


bmpfileheader.bftype = 0x4d42; //'bm';
bmpfileheader.bfoffbits=sizeof(bitmapfileheader) sizeof(bitmapinfoheader);
bmpfileheader.bfsize = sizeof(bitmapfileheader) sizeof(bitmapinfoheader) nsize;


file* pf = fopen("d:\\test.bmp", "wb");
fwrite(&bmpfileheader, sizeof(bitmapfileheader), 1, pf);
fwrite(&header, sizeof(bitmapinfoheader), 1, pf);
fwrite(buff, 1, nsize, pf);
fclose(pf);


delete buff;
}


唯一需要解释的就是这句:
#define widthbytes(bits) ((dword)(((bits) 31) & (~31)) / 8)

这是为了保证32字节对齐。vc的头文件和directshow的文件都能找到定义。

因为 memset(buff, 0, nsize);
所以生成的图是黑色的。
可以自己修改,按rgb三字节写上不同的值,看看图像有什么变化。
阅读(3308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图