-
大小: 334KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-06-01
- 语言: C/C++
- 标签:
资源简介
将raw格式的图像转换为bmp格式的图像(文件包含raw2bmp.cpp,lena.raw和lena.bmp),C++语言描述,使用VC++6.0运行
代码片段和文件信息
#ifdef _HEAD_H//如果已经定义
#endif
#ifndef _HEAD_H//如果没定义
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef float FLOAT;
#define BI_RGB 0L
#define BI_RLE8 1L
#define BI_RLE4 2L
#define BI_BITFIELDS 3L
#pragma pack(2)//说明数据总是在地址为偶数处放
//位图头文件
typedef struct tagBITMAPFILEHEADER
{
WORD bfType;//位图文件的类型,必须为‘BM‘(0x4D42)
DWORD bfSize;//位图文件的大小,以字节为单位
WORD bfReserved1;//位图文件保留字,必须为0
WORD bfReserved2;//位图文件保留字,必须为0
DWORD bfOffBits;//位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位
}BITMAPFILEHEADER;
//位图信息头
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;//本结构所占用字节数
DWORD biWidth;//位图的宽度,以像素为单位
DWORD biHeight;//位图的高度,以像素为单位
WORD biPlanes;//目标设备的级别,必须为1
WORD biBitCount;//每个像素所需的位数,必须是1(双色)
//4(16色),8(256色)或24(真彩色)之一
DWORD biCompression;//位图压缩类型,必须是 0(不压缩)
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage;//位图的大小,以字节为单
DWORD biXPelsPerMeter;//位图水平分辨率,每米像素数
DWORD biYPelsPerMeter;//位图垂直分辨率,每米像素数
DWORD biClrUsed; // 位图实际使用的颜色表中的颜色数
DWORD biCIrImportant;//位图显示过程中重要的颜色数
} BITMAPINFOHEADER;
//色彩表
typedef struct tagRGBQUAD{
BYTE rgbBlue; //该颜色的蓝色分量
BYTE rgbGreen; //该颜色的绿色分量
BYTE rgbRed; //该颜色的红色分量
BYTE rgbReserved; //保留值
}RGBQUAD;
//位图信息
typedef struct tagBITMAPINFO { /* bmi */
BITMAPINFOHEADER bmiHeader;
//说明BITMAPINFOHEADER结构,其中包含了有关位图的尺寸及位格式等信息
RGBQUAD bmiColors[1];
// 说明彩色表RGBQUAD结构的阵列,其中包含索引图像的真实RGB值
} BITMAPINFO;
#endif
//主函数
#include
#include
#define imageW 512
#define imageH 512
int main()
{
FILE *fp_raw*fp_bmp;
int i=0;
fp_raw=fopen(“lena.raw““rb“);
if(fp_raw==NULL)//打开RAW文件“rb“以二进制模式打开只读文件
{
printf(“can‘t open the file!!\n“);//如果失败,返回FILE指针是NULL
return -1;
}
/******************************raw**********************************************************/
BYTE *image[512];//指针数组
for(i=0;i<512;i++)
{
image[i]=new BYTE [512];
fread(image[i]1512fp_raw);//image[i]是存放读入数据的起始地址
//int fread(void *buffer,int size,int count,FILE *fp)
}
fclose(fp_raw);//关闭用fopen打开的文件
/*********************************bmp*************************************************/
fp_bmp=fopen(“lena.bmp““wb“);//新建一个二进制只写文件
BITMAPFILEHEADER bh;//位图文件头
BITMAPINFOHEADER bInfo;//位图信息头
RGBQUAD rgb;//彩色表
rgb.rgbReserved=0; //保留,设置为0
bInfo.biSize=sizeof(BITMAPINFOHEADER);//结构体所需要的字数
bInfo.biWidth=imageW; //高
bInfo.biHeight=imageH; //宽
bInfo.biPlanes=1; //说明位面数,1
bInfo.biBitCount=8; //像素,8比特
bInfo.biCompression=BI_RGB; //无压缩
bInfo.biSizeImage=imageW*imageH; //图像大小,单位字节
bInfo.biXPelsPerMeter=0; //水平分辨率
bInfo.biYPelsPerMeter=0; //垂直分辨率
bInfo.biClrUsed=256; //位图实际使用的彩色表中的颜色索引数
bInfo.biClrImportant=0; //表示颜色索引数目都重要
bh.bfType=((WORD)(‘M‘<<8)|‘B‘); //表示这是一个WORD(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 263224 2015-12-08 20:51 raw2bmp\lena.bmp
文件 262144 2015-12-08 20:51 raw2bmp\lena.raw
文件 4312 2015-10-19 19:39 raw2bmp\raw2bmp.cpp
目录 0 2015-12-08 21:01 raw2bmp
----------- --------- ---------- ----- ----
529680 4
- 上一篇:电梯控制模拟程序MFC
- 下一篇:驱动程序加载
评论
共有 条评论