rgb保存成bmp
来源:互联网 发布:erp软件提供商 编辑:程序博客网 时间:2024/04/29 17:58
二值:
void SaveAsBmp( unsigned char *data, size_t width, size_t height,char *szFileName,RGBQUAD *rgbQuad /*= NULL*/ ){char path[MAX_PATH];GetCurrentDirectoryA(MAX_PATH, path);strcat(path, szFileName);RGBQUAD _rgbquad[256]; BYTE *_data = new BYTE[width*height];for (int c = 0; c < width * height; c++){unsigned char temp = *(data+c); *(_data+c) = (BYTE)(temp);// TRACE1("%d %d\n", *(_data+c), temp);} if (rgbQuad == NULL){rgbQuad = _rgbquad;}for (int i = 0; i < 256; i++){rgbQuad[i].rgbBlue = i;rgbQuad[i].rgbGreen = i;rgbQuad[i].rgbRed = i;rgbQuad[i].rgbReserved = 0;}BITMAPFILEHEADER bmpfilehead = {0};bmpfilehead.bfType = MAKEWORD('B','M');bmpfilehead.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*255;bmpfilehead.bfSize = bmpfilehead.bfOffBits+(width*height);BITMAPINFOHEADER bmpinfoheader = {0};bmpinfoheader.biSize = sizeof(BITMAPINFOHEADER);bmpinfoheader.biBitCount = 8;//位数bmpinfoheader.biClrImportant = 0;bmpinfoheader.biClrUsed = 0;bmpinfoheader.biCompression = BI_RGB;bmpinfoheader.biHeight = height;bmpinfoheader.biPlanes = 1;bmpinfoheader.biSizeImage = height*width;bmpinfoheader.biWidth = width;bmpinfoheader.biXPelsPerMeter = 0;bmpinfoheader.biYPelsPerMeter = 0;FILE *file = NULL;__try{if((file = fopen(path,"wb")) == NULL)return;size_t w = fwrite(&bmpfilehead,sizeof(BYTE),sizeof(bmpfilehead),file);// fflush(file);w = fwrite(&bmpinfoheader,sizeof(BYTE),sizeof(BITMAPINFOHEADER),file);// fflush(file);w = fwrite(rgbQuad,sizeof(BYTE),sizeof(RGBQUAD)*256,file);// fflush(file);w = fwrite(_data,sizeof(BYTE),width*height,file);// fflush(file);}__finally{if (file)fclose(file);delete _data;}}
RGB:
int widthStep = (((iWidth * 24) + 31) & (~31)) / 8 ; //每行实际占用的大小(每行都被填充到一个4字节边界)int DIBSize = widthStep * iHeight ; //buffer的大小 (字节为单位)BYTE *data = new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + DIBSize];BITMAPFILEHEADER *bhh = (BITMAPFILEHEADER *)data;bhh->bfType = ((WORD) ('M' << 8) | 'B'); //'BM'bhh->bfSize = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + widthStep * iHeight;bhh->bfReserved1 = 0;bhh->bfReserved2 = 0;bhh->bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER);BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)(data + sizeof(BITMAPFILEHEADER));bih->biSize=40; // header sizebih->biWidth=iWidth;bih->biHeight=iHeight;bih->biPlanes=1;bih->biBitCount=24; // RGB encoded, 24 bitbih->biCompression=BI_RGB; // no compression 非压缩bih->biSizeImage=widthStep*iHeight*3;bih->biXPelsPerMeter=0;bih->biYPelsPerMeter=0;bih->biClrUsed=0;bih->biClrImportant=0; memcpy(data + sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER), pBuffer, DIBSize);TCHAR *BMPFileName = _T("d:/sss.bmp");CFile file;if(file.Open(BMPFileName,CFile::modeWrite | CFile::modeCreate)){file.Write((LPSTR)data, sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + DIBSize);file.Close();return true;}return false;
0 0
- rgb保存成bmp
- windows 保存rgb数据为bmp文件
- RGB数据保存为BMP图片
- 24位RGB数据保存为BMP图片
- OpenGL保存bmp图片(字节对齐与RGB分量转换)
- 24位RGB数据保存为BMP图片
- OpenGL保存bmp图片(字节对齐与RGB分量转换)
- 24位RGB数据保存为BMP图片
- BGR保存成bmp图像
- BMP保存
- 位图 RGB bmp
- 将YUV或RGB的格式的数据保存为bmp文件
- 将rgb图像数据保存为BMP格式图片的方法
- 将rgb图像数据保存为BMP格式图片的方法
- 将HBITMAP保存成bmp文件
- opengl场景保存成BMP文件
- 把OpenGL场景保存成bmp图片
- 保存客户区数据成BMP图片
- 常见的Web负载均衡方法
- 如何快速学习 安卓开发
- linux 3.5.4 PTRACE(系列九)
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- AssetManager.openFd(String fileName)读取assets下文件报错解决方案
- rgb保存成bmp
- 百度搜索的一些高级语法
- 如何设置短信语音播报
- url-pattern详解
- java 并发编程学习笔记之volatile意外问题的正确分析解答
- 引领技术潮流的传智播客广州.Net培训课程
- jQuery事件之鼠标事件(转)
- 剖析安卓软件的安装位置
- GameObjectPool