• 大小: 806KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签: c、bmp  

资源简介

c语言读取bmp文件、vs2010工程

资源截图

代码片段和文件信息

#include“imageProcess.h“




/*函数功能:位图文件头显示
  输入参数:BITMAPFILEHEADER* pBmpHead 指向位图文件头结构的指针
(即内存地址,实现主调函数实参和被调函数形参的内存共享)
  输出值:没有
*/

void showBmpHead(BITMAPFILEHEADER* pBmpHead)
{
printf(“位图文件头:\n“);
printf(“文件类型:%x\n“pBmpHead->bfType);
printf(“文件大小:%d\n“pBmpHead->bfSize);
printf(“保留字:%d\n“pBmpHead->bfReserved1);
printf(“保留字:%d\n“pBmpHead->bfReserved2);
printf(“实际位图数据的偏移字节数:%d\n“pBmpHead->bfOffBits);
}

/*函数功能:位图信息头显示
输入参数:BITMAPINFOHEADER* pBmpInforHead 指向位图文件信息头结构的指针
(即内存地址,实现主调函数实参和被调函数形参的内存共享)
  输出值:没有
*/
void showBmpInforHead(BITMAPINFOHEADER* pBmpInforHead)
{
printf(“位图信息头:\n“);
printf(“结构体的长度:%d\n“pBmpInforHead->biSize);
printf(“位图宽:%d\n“pBmpInforHead->biWidth);
printf(“位图高:%d\n“pBmpInforHead->biHeight);
printf(“biPlanes平面数:%d\n“pBmpInforHead->biPlanes);
printf(“biBitCount采用颜色位数:%d\n“pBmpInforHead->biBitCount);
printf(“压缩方式:%d\n“pBmpInforHead->biCompression);
printf(“biSizeImage实际位图数据占用的字节数:%d\n“pBmpInforHead->biSizeImage);
printf(“X方向分辨率:%d\n“pBmpInforHead->biXPelsPerMeter);
printf(“Y方向分辨率:%d\n“pBmpInforHead->biYPelsPerMeter);
printf(“使用的颜色数:%d\n“pBmpInforHead->biClrUsed);
printf(“重要颜色数:%d\n“pBmpInforHead->biClrImportant);
}

/*函数功能:颜色表(索引模式)或位图数据区各像素RGB值(真彩模式)显示
  输入参数:RGBQUAD* pRGB --- RGBAlpha 四元素结构体指针变量
            DWORD num --- 要显示的RGBAlpha 四元素结构体个数,
    即颜色表长度或要显示的像素个数
  输出值:  没有
*/
void showRgbQuan(RGBQUAD* pRGB DWORD num)

for (DWORD i=0; i {
   if (i%5==0)
   {
printf(“\n“);
   }
   printf(“(%-3d%-3d%-3d)   “(pRGB+i)->rgbRed(pRGB+i)->rgbGreen(pRGB+i)->rgbBlue);
}
printf(“\n“);

}

/*函数功能:图像反色
  输入参数:RGBQUAD* dataOfBmp_src --- 原图像所有像素(以行为序)对应的
            RGBAlpha 四元素结构体指针;
        RGBQUAD* dataOfBmp_dst --- 反色后的图像所有像素(以行为序)对应的
            RGBAlpha 四元素结构体指针;
            DWORD width DWORD height --- 原图像和输出图像的宽度和高度
            (以像素为单位)
  输出值:  没有
*/
void reverseColor(RGBQUAD** dataOfBmp_src RGBQUAD** dataOfBmp_dst DWORD width DWORD height)
{
   for(DWORD i=0;i for(DWORD j=0;j {
 dataOfBmp_dst[i][j].rgbRed = 255-dataOfBmp_src[i][j].rgbRed;   
 dataOfBmp_dst[i][j].rgbGreen = 255-dataOfBmp_src[i][j].rgbGreen;   
 dataOfBmp_dst[i][j].rgbBlue = 255-dataOfBmp_src[i][j].rgbBlue;    
}            
}

/*函数功能:彩色图像转化为灰度图象
  输入参数:RGBQUAD** dataOfBmp_src --- 原图像所有像素(以行为序)对应的
            RGBAlpha 四元素结构体指针;
        RGBQUAD** dataOfBmp_dst --- 转化为灰度图象后的图像所有像素(以行为序)对应的RGBAlpha 四元素结构体指针;
        BYTE** dataOfBmp_gray --- 转化为灰度图象后的图像所有像素(以行为序)对应的灰度值;
            DWORD width DWORD height --- 原图像和输出图像的宽度和高度
            (以像素为单位)
  输出值:  没有
*/
void RGB2Gray(RGBQUAD** dataOfBmp_src RGBQUAD** dataOfBmp_dst BYTE** dataOfBmp_gray DWORD width DWORD height)
{
double gray;
   
for(DWORD i=0;i {
for(DWORD j=0;j {
 gray = 0.299*dataOfBmp_src[i][j].rgbRed+0.587*dataOfBmp_src[i][j].rgbGreen+0.114*dataOfBmp_src[i][j].rgbBlue;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      39424  2016-05-04 17:50  test1\Debug\test1.exe

     文件     363728  2016-05-04 17:50  test1\Debug\test1.ilk

     文件     461824  2016-05-04 17:50  test1\Debug\test1.pdb

     文件    2228224  2016-05-04 17:55  test1\ipch\test1-92e0a540\test1-aadfba3d.ipch

     文件        518  2016-05-04 17:50  test1\test1\Debug\cl.command.1.tlog

     文件       2142  2016-05-04 17:50  test1\test1\Debug\CL.read.1.tlog

     文件        180  2016-05-04 17:50  test1\test1\Debug\CL.write.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link-cvtres.read.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link-cvtres.write.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link.1256-cvtres.read.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link.1256-cvtres.write.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link.1256.read.1.tlog

     文件          2  2016-05-04 17:50  test1\test1\Debug\link.1256.write.1.tlog

     文件       1202  2016-05-04 17:50  test1\test1\Debug\link.command.1.tlog

     文件       2368  2016-05-04 17:50  test1\test1\Debug\link.read.1.tlog

     文件        430  2016-05-04 17:50  test1\test1\Debug\link.write.1.tlog

     文件      32781  2016-05-04 17:50  test1\test1\Debug\main.obj

     文件        320  2016-05-04 17:50  test1\test1\Debug\mt.command.1.tlog

     文件        206  2016-05-04 17:50  test1\test1\Debug\mt.read.1.tlog

     文件        206  2016-05-04 17:50  test1\test1\Debug\mt.write.1.tlog

     文件        404  2016-05-04 15:50  test1\test1\Debug\rc.command.1.tlog

     文件        178  2016-05-04 15:50  test1\test1\Debug\rc.read.1.tlog

     文件        186  2016-05-04 15:50  test1\test1\Debug\rc.write.1.tlog

     文件        406  2016-05-04 15:50  test1\test1\Debug\test1.exe.embed.manifest

     文件        472  2016-05-04 15:50  test1\test1\Debug\test1.exe.embed.manifest.res

     文件        381  2016-05-04 17:50  test1\test1\Debug\test1.exe.intermediate.manifest

     文件         42  2016-05-04 17:50  test1\test1\Debug\test1.lastbuildstate

     文件       3507  2016-05-04 17:50  test1\test1\Debug\test1.log

     文件        200  2016-05-04 15:50  test1\test1\Debug\test1_manifest.rc

     文件      60416  2016-05-04 17:50  test1\test1\Debug\vc100.idb

............此处省略18个文件信息

评论

共有 条评论

相关资源