创建一副位图并将位图保存为bmp格式
来源:互联网 发布:阿里云费用如何提现 编辑:程序博客网 时间:2024/05/17 18:12
/*************************************************************************************************
**File: bmp.c
**Author: *****
**Created: August 7th2009
**Description: 创建一副位图并将位图保存为bmp格式
**************************************************************************************************/
#include <iostream>
using namespace std;
typedef long LONG;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef struct {
WORD bfType;//2
DWORD bfSize;//4
WORD bfReserved1;//2
WORD bfReserved2;//2
DWORD bfOffBits;//4
}__attribute__((packed))FileHead;
typedef struct{
DWORD biSize;//4
LONG biWidth;//4
LONG biHeight;//4
WORD biPlanes;//2
WORD biBitCount;//2
DWORD biCompress;//4
DWORD biSizeImage;//4
LONG biXPelsPerMeter;//4
LONG biYPelsPerMeter;//4
DWORD biClrUsed;//4
DWORD biClrImportant;//4
}__attribute__((packed))Infohead;
/*typedef struct
{
unsigned char rgbBlue;
unsigned char rgbGreen;
unsigned char rgbRed;
unsigned char rgbReserved;
}RGBQuad;//it may be useless*/
typedef struct
{
BYTE b;
BYTE g;
BYTE r;
}RGB_data;//RGB TYPE
int bmp_generator(char * filename,int width,int height,unsigned char *data)
{
FileHead bmp_head;
Infohead bmp_info;
int size = width*height*3;
//Test data
/* RGB_Test bmp_data[width][height];
int i,j;
for (i=0;i<width;i++)
for (j=0;j<height;j++)
{
bmp_data[i][j].g=bmp_data[i][j].b=0;
bmp_data[i][j].r=0xff;
}
*/
bmp_head.bfType=0x4d42;
bmp_head.bfSize=size+sizeof(FileHead)+sizeof(Infohead);//24+head+info no quad
bmp_head.bfReserved1=bmp_head.bfReserved2=0;
bmp_head.bfOffBits=bmp_head.bfSize-size;
//finish the initial of head
bmp_info.biSize=40;
bmp_info.biWidth=width;
bmp_info.biHeight=height;
bmp_info.biPlanes=1;
bmp_info.biBitCount = 24;
bmp_info.biCompress=0;
bmp_info.biSizeImage=size;
bmp_info.biXPelsPerMeter=0;
bmp_info.biYPelsPerMeter=0;
bmp_info.biClrUsed=0;
bmp_info.biClrImportant=0;
//finish the initial of infohead;
//copy the data
// fstream file3(filename);
FILE *fp;
if(!(fp=fopen(filename,"wb"))) return 0;
fwrite(&bmp_head,1,sizeof(FileHead),fp);
fwrite(&bmp_info,1,sizeof(Infohead),fp);
fwrite(data,1,size,fp);
fclose(fp);
return 1;
}
int main(int argc,char **argv)
{
int i,j;
RGB_data buffer[512][512];
// cout<<"usage:bmp_generator width height"<<endl;
cout<<"programmed by zhunan"<<endl;
cout<<"API Guide:"<<endl;
cout<<"bmp_generator(char * filename,int width,int height,unsigned char * data);"<<endl;
memset(buffer, 0, sizeof(buffer));
//please edit width and height here
//hard coding
for (i=0;i<256;i++)
for (j=0;j<256;j++)
{
buffer[i][j].g=buffer[i][j].b=0xf0;
buffer[j][i].r=0xff;
}
bmp_generator("/home/Screen.bmp",512,512,(BYTE*)buffer);
return 1;
}
- 创建一副位图并将位图保存为bmp格式
- 将位图句柄保存为BMP文件
- 创建并保存位图
- 如何将位图对象保存为BMP文件
- 将HBITMAP句柄保存为本地bmp位图
- 获取桌面并将其保存为位图文件
- bmp位图的格式
- BMP位图格式详解
- BMP位图格式详解
- BMP位图格式学习
- 截取位图中的某一部分,并保存为另一位图
- 截取位图中的某一部分,并保存为另一位图
- 截取位图中的某一部分,并保存为另一位图
- RGB565格式数据保存为位图
- 用java实现print screen,读取位图文件,将位图文件转化位jpeg格式并保存成文件输出!
- 读取BMP文件中关于位图属性的信息,将一个数值矩阵封装为一个BMP格式的文件
- 用CxImage将BMP位图转换成JPEG格式
- BMP 设备无关位图格式
- 10-09-09
- CSS控制页面的四种方式
- 栈的相关操作
- 暴雪,你为何选择了网易?一个不合格的游戏运营者
- 队列的操作
- 创建一副位图并将位图保存为bmp格式
- break 和Continue 误大事
- 群体无聊 group boredom
- 各种“假日”的英文表达
- minigui下实现截屏
- Linux rar 安装
- 网页页面内跳转
- Lotus Notes/Domino 发布最新版本 - 8.5.1
- 创建一个管道,并实现其中的读写操作