Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > BMP文件格式及创建简单位图
【标  题】:BMP文件格式及创建简单位图
【关键字】:BMP
【来  源】:http://blog.csdn.net/lulustray/archive/2006/12/22/1452427.aspx

BMP文件格式及创建简单位图

Your Ad Here

BMP文件格式由:BMP文件头,BMP信息头,调色板,位图数据组成。

下面程序演示创建简单的位图文件:

 

// createbitmap.cpp : 定义控制台应用程序的入口点。
//

#include 
"stdafx.h"
#include 
<windows.h>
#include 
<fstream>
using namespace std;
long const m_Width=32;
long const m_Height=32;

int _tmain(int argc, _TCHAR* argv[])
{
    BITMAPFILEHEADER bitmapFileHead;
    BITMAPINFOHEADER bitmapInfoHead;
    RGBQUAD rgbQuad[
256];
    
int i;

    
//设置BMP信息头
    bitmapInfoHead.biSize=sizeof(BITMAPINFOHEADER);
    bitmapInfoHead.biWidth
=m_Width;
    bitmapInfoHead.biHeight
=m_Height;
    bitmapInfoHead.biPlanes
=1//1个页面
    bitmapInfoHead.biBitCount=8;//8位色彩,共256色
    bitmapInfoHead.biCompression=BI_RGB;//常量0,不压缩
    bitmapInfoHead.biSizeImage=m_Width*m_Height;

    bitmapInfoHead.biXPelsPerMeter
=9600;
    bitmapInfoHead.biYPelsPerMeter
=9600;

    bitmapInfoHead.biClrUsed
=0;//使用颜色数
    bitmapInfoHead.biClrImportant=00;//关键颜色数

    
//对调色板赋值
    for(i=0;i<256;i++){
        rgbQuad[i].rgbBlue
=(BYTE)i;
        rgbQuad[i].rgbGreen
=(BYTE)i;
        rgbQuad[i].rgbRed
=255;
        rgbQuad[i].rgbReserved
=0;//保留位
    }


    
//位图信息
    char chData[32][32];
    FillMemory(
&chData,sizeof(chData),0);
    
for(i=0;i<32;i++){
        
for(int j=0;j<32;j++){
            chData[i][j]
=i*8;  //写入调色版的颜色号
        }

    }

    
//对文件头进行赋值

    bitmapFileHead.bfType
=(WORD)0x4D42;//"BM"
    bitmapFileHead.bfSize=(WORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256+m_Width*m_Height);
    bitmapFileHead.bfReserved1
=0;
    bitmapFileHead.bfReserved2
=0;

    bitmapFileHead.bfOffBits
=(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256);
    fstream fout;
    fout.open(
"test.bmp",ios::out|ios::binary);
    
if(!fout.good()){
        MessageBox(NULL,(LPCWSTR)
"文件打开失败",(LPCWSTR)"提示",MB_ICONINFORMATION);
        
return -1;
    }

    
//写入
    fout.write((char*)&bitmapFileHead,sizeof(BITMAPFILEHEADER));//写入文件头
    fout.write((char*)&bitmapInfoHead,sizeof(BITMAPINFOHEADER));//写信息头
    fout.write((char*)&rgbQuad,sizeof(RGBQUAD)*256);//写入调色版
    fout.write((char*)&chData,m_Width*m_Height); //写数据
    fout.close();
    
return 0;
}

 

 

发现了一个不错的js类库:【上一篇】
一个入门程序:【下一篇】
【相关文章】
  • bmp显示及VC操作
  • BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 的各种操作类
  • 基于B/S架构在Web上浏览CAD(dwg,dxf,dwf,dgn,bmp,jpg,wmf)等文件
  • BMP位图文件结构及VC操作
  • 图像处理基础层库之核心bmp库及其jpg格式插件
  • 数字图像处理编程之一:熟悉BMP图像格式
  • BMP格式补充(16bbp & 32bbp & 4字节对齐 & pixel data存放顺序)
  • BMP格式补充(16bbp & 32bbp & 4字节对齐)
  • ASP adodb.stream 取 Win32 .bmp 图片完整文件头信息 By shawl.qiu
  • 获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP'
  • 【随机文章】
  • 一个XML对于数据传输的问题
  • 需要关闭远程连接时
  • 轻松DIY新闻组服务器
  • 第五章 iSNSP消息格式(iSNSP Message Format)-- 六、注册和查询消息
  • regcomp和regexec函数
  • GlassFish(水晶鱼) —— 一个开源JAVA EE 应用服务
  • 万年编辑器VI的使用
  • 把防火墙的知识总结一下:
  • 利用XSLT将线性XML转换为树型XML
  • 构建简单的Webmail系统
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.