• 大小: 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


评论

共有 条评论

相关资源