将rgb图像数据保存为BMP格式图片的方法
2012-12-27 15:38
585 查看
extern "C" { #include <stdio.h> #include <stdlib.h> #include <jpeglib.h> } typedef long LONG; typedef unsigned long DWORD; typedef unsigned short WORD; typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BMPFILEHEADER_T; typedef struct{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BMPINFOHEADER_T; void savebmp(uchar * pdata, char * bmp_file, int width, int height ) { //分别为rgb数据,要保存的bmp文件名,图片长宽 int size = width*height*3*sizeof(char); // 每个像素点3个字节 // 位图第一部分,文件信息 BMPFILEHEADER_T bfh; bfh.bfType = (WORD)0x4d42; //bm bfh.bfSize = size // data size + sizeof( BMPFILEHEADER_T ) // first section size + sizeof( BMPINFOHEADER_T ) // second section size ; bfh.bfReserved1 = 0; // reserved bfh.bfReserved2 = 0; // reserved bfh.bfOffBits = sizeof( BMPFILEHEADER_T )+ sizeof( BMPINFOHEADER_T );//真正的数据的位置 // 位图第二部分,数据信息 BMPINFOHEADER_T bih; bih.biSize = sizeof(BMPINFOHEADER_T); bih.biWidth = width; bih.biHeight = -height;//BMP图片从最后一个点开始扫描,显示时图片是倒着的,所以用-height,这样图片就正了 bih.biPlanes = 1;//为1,不用改 bih.biBitCount = 24; bih.biCompression = 0;//不压缩 bih.biSizeImage = size; bih.biXPelsPerMeter = 2835 ;//像素每米 bih.biYPelsPerMeter = 2835 ; bih.biClrUsed = 0;//已用过的颜色,24位的为0 bih.biClrImportant = 0;//每个像素都重要 FILE * fp = fopen( bmp_file,"wb" ); if( !fp ) return; fwrite( &bfh, 8, 1, fp );//由于linux上4字节对齐,而信息头大小为54字节,第一部分14字节,第二部分40字节,所以会将第一部分补齐为16自己,直接用sizeof,打开图片时就会遇到premature end-of-file encountered错误 fwrite(&bfh.bfReserved2, sizeof(bfh.bfReserved2), 1, fp); fwrite(&bfh.bfOffBits, sizeof(bfh.bfOffBits), 1, fp); fwrite( &bih, sizeof(BMPINFOHEADER_T),1,fp ); fwrite(pdata,size,1,fp); fclose( fp ); }
相关文章推荐
- 将rgb图像数据保存为BMP格式图片的方法
- vc/mfc获取rgb图像数据后动态显示及保存图片的方法
- MFC获取rgb图像数据后动态显示及保存图片的方法
- vc/mfc获取rgb图像数据后动态显示及保存图片的方法
- vc/mfc获取rgb图像数据后动态显示及保存图片的方法
- matlab批处理多个文件数据及保存多个输出图像的方法及例子
- 借用gamma校正的方法来调整图片(灰度)亮度(解决侧光问题)并将其再次保存为RGB图片
- 将RGB图像数据压缩成jpg格式图片的代码实现
- 将画布(canvas)图像保存成本地图片的方法
- Android数据存储:获取网络图片把图片保存到SD卡中并从SDk卡中读取(通过Bitmap方法)
- 将画布(canvas)图像保存成本地图片的方法
- 24位RGB数据保存为BMP图片
- 24位RGB数据保存为BMP图片
- GDAL 遥感图像处理后的数据保存为图像文件的实现方法
- 24位RGB数据保存为BMP图片
- C语言读取txt里面的图像数据字符串换成十六进制然后保存为bmp格式的图像文件
- 将RGB数据直接保存为图片
- 猎豹MFC--使用GDI+打开保存图片--把bmp格式图像 保存为了 jpeg格式
- 将画布(canvas)图像保存成本地图片的方法
- 获取本地路径的方法,在沙河路径中保存图片 ,将保存文件到沙河路径下 把图片转换成NSData类型的数据来保存文件