精华内容
下载资源
问答
  • 创建BMP文件C++code

    2014-08-22 23:52:02
    创建BMP C++ code gis rs 开发参考
  • VC创建BMP文件

    千次阅读 2012-09-28 20:09:12
    BYTE* Data //bmp数据 ...int intImgSize //生成的bmp文件大小 CString filename//bmp文件名 void CreateBMP(BYTE* Data,int pBitsSize, int intImgSize, CStringfilename) {  //定义图形大小  int iWidth

    BYTE* Data //bmp数据

    int pBitsSize //bmp数据大小

    int intImgSize //生成的bmp文件大小

    CString filename//bmp文件名

    void CreateBMP(BYTE* Data,int pBitsSize, int intImgSize, CStringfilename)
    {
     //定义图形大小
     int iWidth = 320;
     int iHeight = 240;
     int iPixel = 8;
     RGBQUAD Quad[256];
     //图形格式参数
     LPBITMAPINFO lpbmih = new BITMAPINFO;
     lpbmih->bmiHeader.biSize =sizeof(BITMAPINFOHEADER);
     lpbmih->bmiHeader.biWidth = iWidth;
     lpbmih->bmiHeader.biHeight = -iHeight;
     lpbmih->bmiHeader.biPlanes = 1;
     lpbmih->bmiHeader.biBitCount = iPixel;
     lpbmih->bmiHeader.biCompression =BI_RGB;
     lpbmih->bmiHeader.biSizeImage = 0;
     lpbmih->bmiHeader.biXPelsPerMeter = 0;
     lpbmih->bmiHeader.biYPelsPerMeter = 0;
     lpbmih->bmiHeader.biClrUsed = 0;
     lpbmih->bmiHeader.biClrImportant = 0;

     //设定调色盘数据Quad(红色)

     for(int n=0; n<256;n++){  
      Quad[n].rgbBlue = 0;
      Quad[n].rgbGreen=0;  
      Quad[n].rgbRed=n;  
      Quad[n].rgbReserved=0;  
     }

     BYTE *pBits;

     //添加自绘图形
     pBits = Data;
     //保存到文件并创建位图结构
     BITMAPFILEHEADER bmfh;
     ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
     *((char *)&bmfh.bfType) = 'B';
     *(((char *)&bmfh.bfType) + 1) = 'M';
     bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) +sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);
     bmfh.bfSize = intImgSize;// bmfh.bfOffBits +(iWidth * iHeight) * iPixel / 8;


     TCHAR szBMPFileName[128];
     //int iBMPBytes = iWidth * iHeight * iPixel /8;
     strcpy(szBMPFileName,filename);
     CFile file;
     if(file.Open(szBMPFileName,CFile::modeWrite |CFile::modeCreate))
     {
      file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
      file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
      file.Write(Quad,sizeof(Quad));

      file.Write(pBits,pBitsSize);
      file.Close();
     }

     delete lpbmih; lpbmih = NULL;
    }


    来自东子的博客

    展开全文
  • 创建bmp文件

    千次阅读 2011-09-07 11:24:30
    为了方便测试人员,需要将产品的运行界面生成bmp格式文件。上网查阅了大量文件,终于做出了一个生成bmp的接口类。源代码见附件。开发和测试环境是在vc6.0和windows进行的。里面只实现了24位真彩色和4位彩色
    最近,公司一个项目需要编写说明手册,产品是基于arm的嵌入式产品。为了方便测试人员,需要将产品的运行界面生成bmp格式文件。上网查阅了大量文件,终于做出了一个生成bmp的接口类。源代码见附件。开发和测试环境是在vc6.0和windows进行的。里面只实现了24位真彩色和4位彩色(根据公司的要求,只填充了调色版的两种颜色,蓝色和绿色)。如果需要移植到自己的环境中去,需要改变接口的数据类型定义。
    展开全文
  • c++创建BMP文件并写入数据

    万次阅读 2015-01-30 15:36:14
    最近要看看自己生成的图像,想输出到一个bmp文件。BMP(Bitmap-File)图形文件,又叫位图文件,是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像...

    参考:http://zhidao.baidu.com/link?url=K0X3GJIiAdhEJ3UheJ8RTcEKrApKn2B6dRkcEpkVspNfebrm345Ltx7_VUJqDs9QYA-0MOTBMBLcOm-h_MD7sa

    参考:http://blog.csdn.net/lanbing510/article/details/8176231


    最近要看看自己生成的图像,想输出到一个bmp文件。

    1、BMP文件概述

        BMP(Bitmap-File)图形文件,又叫位图文件,是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。一个BMP文件由四部分组成:

    image

    • 位图文件头
    • 位图信息段
    • 调色板
    • 位图数据

                   

                  一个BMP文件,可以用代码表示,如下:

                  typedef struct tagBITMAP_FILE{

                  BITMAPFILEHEADER bitmapheader;
                  BITMAPINFOHEADER bitmapinfoheader;
                  PALETTEENTRY palette[256];
                  UCHAR *buffer;

                  } BITMAP_FILE;

                  更详细的请参考http://blog.csdn.net/lanbing510/article/details/8176231

                  二、BMP文件的写入

                  将一个32位数据写入到BMP。

                  #pragma pack(2)//必须得写,否则sizeof得不到正确的结果
                  typedef unsigned char  BYTE;
                  typedef unsigned short WORD;
                  typedef unsigned long  DWORD;
                  typedef long    LONG;
                  typedef struct {
                  	WORD    bfType;
                  	DWORD   bfSize;
                  	WORD    bfReserved1;
                  	WORD    bfReserved2;
                  	DWORD   bfOffBits;
                  } BITMAPFILEHEADER;
                  
                  typedef struct {
                  	DWORD      biSize;
                  	LONG       biWidth;
                  	LONG       biHeight;
                  	WORD       biPlanes;
                  	WORD       biBitCount;
                  	DWORD      biCompression;
                  	DWORD      biSizeImage;
                  	LONG       biXPelsPerMeter;
                  	LONG       biYPelsPerMeter;
                  	DWORD      biClrUsed;
                  	DWORD      biClrImportant;
                  } BITMAPINFOHEADER;
                  
                  void saveBitmap(int w, int h,unsigned char *pData,int nDatasize )
                  {
                  
                  	// Define BMP Size
                  	const int height = w;
                  	const int width = h;
                  	const int size = nDatasize;
                  	double x, y;
                  	int index;
                  
                  	// Part.1 Create Bitmap File Header
                  	BITMAPFILEHEADER fileHeader;
                  
                  	fileHeader.bfType = 0x4D42;
                  	fileHeader.bfReserved1 = 0;
                  	fileHeader.bfReserved2 = 0;
                  	fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + size;
                  	fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
                  
                  	// Part.2 Create Bitmap Info Header
                  	BITMAPINFOHEADER bitmapHeader = { 0 };
                  
                  	bitmapHeader.biSize = sizeof(BITMAPINFOHEADER);
                  	bitmapHeader.biHeight = -height;
                  	bitmapHeader.biWidth = width;
                  	bitmapHeader.biPlanes = 1;
                  	bitmapHeader.biBitCount = 32;
                  	bitmapHeader.biSizeImage = size;
                  	bitmapHeader.biCompression = 0; //BI_RGB
                  
                  
                  	// Write to file
                  	FILE *output = fopen("output.bmp", "wb");
                  
                  	if (output == NULL)
                  	{
                  		printf("Cannot open file!\n");
                  	}
                  	else
                  	{
                  		fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, output);
                  		fwrite(&bitmapHeader, sizeof(BITMAPINFOHEADER), 1, output);
                  		fwrite(pData, size, 1, output);
                  		fclose(output);
                  	}
                  }
                       
                         #pragma pack(2)必须要加。bfType是2个字节,对应“BM”,后4个字节是文件大小,又对应4字节。如果不设定对齐方式,而按默认的8字节或4字节对应,这些属性就错位了,而别人又是按标准来读取的,对齐方式不同,自然出错。一般情况下的编程之所以不考虑这些问题,是因为读取和保存都是你个人完成的,对齐方式是一样的,自然不出错。而这里你生成的图片可能还要供别人使用,自然要严格遵守标准。

                      将一个正弦曲线写入24位的BMP。

                  void saveBitmap()
                  {
                  	// Define BMP Size
                  	const int height = 600;
                  	const int width = 800;
                  	const int size = height * width * 3;
                  	double x, y;
                  	int index;
                  
                  	// Part.1 Create Bitmap File Header
                  	BITMAPFILEHEADER fileHeader;
                  
                  	fileHeader.bfType = 0x4D42;
                  	fileHeader.bfReserved1 = 0;
                  	fileHeader.bfReserved2 = 0;
                  	fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + size;
                  	fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
                  
                  	// Part.2 Create Bitmap Info Header
                  	BITMAPINFOHEADER bitmapHeader = { 0 };
                  
                  	bitmapHeader.biSize = sizeof(BITMAPINFOHEADER);
                  	bitmapHeader.biHeight = height;
                  	bitmapHeader.biWidth = width;
                  	bitmapHeader.biPlanes = 3;
                  	bitmapHeader.biBitCount = 24;
                  	bitmapHeader.biSizeImage = size;
                  	bitmapHeader.biCompression = 0; //BI_RGB
                  
                  	// Part.3 Create Data
                  	BYTE *bits = (BYTE *)malloc(size);
                  
                  	// Clear
                  	memset(bits, 0xFF, size);
                  
                  	// Sin Graph
                  	for (x = 0; x < 800; x += 0.5)
                  	{
                  		y = sin(x / 100.0) * 200 + 300;
                  		index = (int)y * 800 * 3 + (int)x * 3;
                  
                  		bits[index + 0] = 255; // Blue
                  		bits[index + 1] = 0;   // Green
                  		bits[index + 2] = 0;   // Red
                  	}
                  
                  	// Write to file
                  	FILE *output = fopen("output.bmp", "wb");
                  
                  	if (output == NULL)
                  	{
                  		printf("Cannot open file!\n");
                  	}
                  	else
                  	{
                  		fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, output);
                  		fwrite(&bitmapHeader, sizeof(BITMAPINFOHEADER), 1, output);
                  		fwrite(bits, size, 1, output);
                  		fclose(output);
                  	}
                  }

                  注意点:

                      图象的高度,以象素为单位。这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,即:数据的第一行其实是图像的最后一行,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。

                  展开全文
                • 从内存DC创建bmp文件

                  千次阅读 2011-07-12 22:44:43
                  //bimap file header in order to write bmp file  BITMAPFILEHEADER bmBITMAPFILEHEADER; ZeroMemory(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER)); bmBITMAPFILEHEADER.bfType = 0x4d42; //bmp  ...

                  http://zhidao.baidu.com/question/27257644.html

                  HDC hScrDC, hMemDC;         
                  int width, height;


                  //the pointer will save all pixel point's color value
                  BYTE *lpBitmapBits = NULL; 


                  //creates a device context for the screen device
                  hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);


                  //get the screen point size
                  width = GetDeviceCaps(hScrDC, HORZRES);
                  height = GetDeviceCaps(hScrDC, VERTRES);


                  //creates a memory device context (DC) compatible with the screen device(hScrDC) 
                  hMemDC = CreateCompatibleDC(hScrDC);


                  //initialise the struct BITMAPINFO for the bimap infomation, 
                  //in order to use the function CreateDIBSection
                  // on wince os, each pixel stored by 24 bits(biBitCount=24) 
                  //and no compressing(biCompression=0) 
                  BITMAPINFO RGB24BitsBITMAPINFO; 
                  ZeroMemory(&RGB24BitsBITMAPINFO, sizeof(BITMAPINFO));
                  RGB24BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
                  RGB24BitsBITMAPINFO.bmiHeader.biWidth = width;
                  RGB24BitsBITMAPINFO.bmiHeader.biHeight = height;
                  RGB24BitsBITMAPINFO.bmiHeader.biPlanes = 1;
                  RGB24BitsBITMAPINFO.bmiHeader.biBitCount = 24;


                  //use the function CreateDIBSection and SelectObject 
                  //in order to get the bimap pointer : lpBitmapBits 
                  HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO, 
                  DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);
                  HGDIOBJ previousObject = SelectObject(hMemDC, directBmp);


                  // copy the screen dc to the memory dc
                  BitBlt(hMemDC, 0, 0, width, height, hScrDC, 0, 0, SRCCOPY);


                  //if you only want to get the every pixel color value, 
                  //you can begin here and the following part of this function will be unuseful;
                  //the following part is in order to write file;


                  //bimap file header in order to write bmp file 
                  BITMAPFILEHEADER bmBITMAPFILEHEADER;
                  ZeroMemory(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER));
                  bmBITMAPFILEHEADER.bfType = 0x4d42; //bmp 
                  bmBITMAPFILEHEADER.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
                  bmBITMAPFILEHEADER.bfSize = bmBITMAPFILEHEADER.bfOffBits + ((width*height)*3); ///3=(24 / 8)


                  //write into file
                  FILE *mStream = NULL;
                  if((mStream = fopen(filename, "wb")))

                  //write bitmap file header    //文件头
                  fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream);
                  //write bitmap info           //数据头
                  fwrite(&(RGB24BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream);
                  //write bitmap pixels data    //数据信息
                  fwrite(lpBitmapBits, 3*width*height, 1, mStream);
                  //close file
                  fclose(mStream);

                  #ifdef _UNICODE
                  WCHAR wBuffer[1024] ;
                  mbstowcs(wBuffer, filename, strlen(filename)+1);
                  CStringW str;
                  str.Format(_T("文件保存在: "));
                  str.AppendFormat(wBuffer);
                  MessageBoxW(str);
                  TRACE(str);
                  #else
                  CStringA str;
                  str.format("文件保存在: ");
                  str.AppendFormat(filename);
                  MessageBoxA(str);


                  #endif //_UNICODE

                  }


                  //delete
                  DeleteObject(hMemDC);
                  DeleteObject(hScrDC);
                  DeleteObject(directBmp);
                  DeleteObject(previousObject);

                  展开全文
                • BMP文件格式BMP文件BMP文件格式格式
                • BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解BMP文件格式详解
                • 1.BMP文件组成 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 2. BMP文件BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下:
                • 实现对bmp文件的压缩解压,提供了压缩和解压两个方法
                • BMP文件格式文档(用于解析BMP文件)
                • BMP文件格式

                  2016-05-13 13:31:57
                  BMP文件格式 RLE压缩
                • 创建位图,并生成BMP文件

                  热门讨论 2010-03-08 17:48:14
                  一个非常实用的位图生成样例,并可生成相应的BMP文件
                • 易语言BMP文件查看源码,BMP文件查看
                • BMP文件头格式 bmp文件二进制解析,bmp文件解析,bmp存储格式 下面的表格是我整理的BMP文件头的格式。 方便大家查询。   Bmp的文件头是 54 , 以下都是24 bit, 如果 图像大小是 720 * 480 ,那么文件大小是: 54 ...
                • BMP文件格式详解

                  2017-12-19 17:09:08
                  BMP文件格式详解
                • 比较完整的BMP文件格式分析 BMP文件格式分析,更深入讲解BMP文件格式的构造
                • Creating a DIB section from a BMP file 从BMP文件创建一个设备无关的位图(5KB)
                • CMFCToolBar创建例子里的四个图标BMP文件
                • BMP文件格式分析

                  2016-02-05 12:14:37
                  BMP文件格式分析 详细介绍了BMP文件格式的结构,各个字段的含义,可作为BMP文件编码和解码的参考手册,手册是中文的。
                • BMP文件解析

                  千次阅读 2017-07-23 17:22:08
                  BMP文件简介BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,...
                • 读出BMP文件,并以txt的形式进行保存 或者执行相反的过程
                • (直接创建+读取)(灰度+真彩bmp文件),自己写的一个小程序,只是简单的读取或者创建一个bmp位图文件,需要参考的可以下载看看
                • bmp文件格式分析数据

                  2012-05-29 13:33:28
                  bmp文件格式分析,bmp文件格式分析bmp文件格式分析bmp文件格式分析bmp文件格式分析bmp文件格式分析bmp文件格式分析bmp文件格式分析bmp文件格式分析
                • BMP文件查看.rar

                  2020-04-04 11:20:13
                  BMP文件查看.rar
                • bmp文件画圆

                  2015-04-16 10:06:21
                  打开一个bmp文件,在中心画一个圆,在保存如文件
                • BMP文件结构分析

                  2016-03-01 22:02:10
                  BMP文件结构分析详细分析了BMP数据的结构,头信息。

                空空如也

                空空如也

                1 2 3 4 5 ... 20
                收藏数 146,924
                精华内容 58,769
                关键字:

                如何创建bmp文件