77范文网 - 专业文章范例文档资料分享平台

BMP图片处理--C语言(2)

来源:网络收集 时间:2019-03-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

scanf(\

pfile = fopen(strFile,\打开文件

if(pfile!=NULL) {

printf(\//读取位图文件头信息 WORD fileType;

fread(&fileType,1,sizeof(WORD),pfile); if(fileType != 0x4d42) {

printf(\return; }

//fseek(pfile,2,SEEK_CUR); // \

fread(&bitHead,1,sizeof(tagBITMAPFILEHEADER),pfile);

showBmpHead(&bitHead); printf(\

//读取位图信息头信息

fread(&bitInfoHead,1,sizeof(BITMAPINFOHEADER),pfile); showBmpInforHead(&bitInfoHead); printf(\} else {

printf(\return; }

tagRGBQUAD *pRgb ;

if(bitInfoHead.biBitCount < 24)//有调色板 {

//读取调色盘结信息

long nPlantNum = long(pow(2,double(bitInfoHead.biBitCount))); // Mix color Plant Number; pRgb=(tagRGBQUAD *)malloc(nPlantNum*sizeof(tagRGBQUAD)); memset(pRgb,0,nPlantNum*sizeof(tagRGBQUAD)); int num = fread(pRgb,4,nPlantNum,pfile);

printf(\

printf(\颜色板信息:\\n\for (int i =0; i

if (i%5==0) {

printf(\}

showRgbQuan(&pRgb[i]); }

printf(\ }

int width = bitInfoHead.biWidth; int height = bitInfoHead.biHeight; //分配内存空间把源图存入内存

int l_width = WIDTHBYTES(width* bitInfoHead.biBitCount);//计算位图的实际宽度并确保它为32的倍数

BYTE *pColorData=(BYTE *)malloc(height*l_width); memset(pColorData,0,height*l_width);

long nData = height*l_width;

//把位图数据信息读到数组里 fread(pColorData,1,nData,pfile);

//将位图数据转化为RGB数据 tagRGBQUAD* dataOfBmp;

dataOfBmp = (tagRGBQUAD *)malloc(width*height*sizeof(tagRGBQUAD));//用于保存各像素对应的RGB数据

memset(dataOfBmp,0,width*height*sizeof(tagRGBQUAD));

if(bitInfoHead.biBitCount<24)//有调色板,即位图为非真彩色 { int k; int index = 0;

if (bitInfoHead.biBitCount == 1) {

for(int i=0;i

BYTE mixIndex= 0;

k = i*l_width + j/8;//k:取得该像素颜色数据在实际数据数组中的序号 //j:提取当前像素的颜色的具体值 mixIndex = pColorData[k]; switch(j%8) { case 0:

mixIndex = mixIndex<<7; mixIndex = mixIndex>>7; break; case 1:

mixIndex = mixIndex<<6;

mixIndex = mixIndex>>7; break; case 2:

mixIndex = mixIndex<<5; mixIndex = mixIndex>>7; break; case 3:

mixIndex = mixIndex<<4; mixIndex = mixIndex>>7; break; case 4:

mixIndex = mixIndex<<3; mixIndex = mixIndex>>7; break; case 5:

mixIndex = mixIndex<<2; mixIndex = mixIndex>>7; break; case 6:

mixIndex = mixIndex<<1; mixIndex = mixIndex>>7; break; case 7:

mixIndex = mixIndex>>7; break; }

//将像素数据保存到数组中对应的位置

dataOfBmp[index].rgbRed = pRgb[mixIndex].rgbRed; dataOfBmp[index].rgbGreen = pRgb[mixIndex].rgbGreen; dataOfBmp[index].rgbBlue = pRgb[mixIndex].rgbBlue;

dataOfBmp[index].rgbReserved = pRgb[mixIndex].rgbReserved; index++; } }

if(bitInfoHead.biBitCount==2) {

for(int i=0;i

BYTE mixIndex= 0;

k = i*l_width + j/4;//k:取得该像素颜色数据在实际数据数组中的序号 //j:提取当前像素的颜色的具体值 mixIndex = pColorData[k]; switch(j%4) { case 0:

mixIndex = mixIndex<<6; mixIndex = mixIndex>>6; break; case 1:

mixIndex = mixIndex<<4; mixIndex = mixIndex>>6; break; case 2:

mixIndex = mixIndex<<2; mixIndex = mixIndex>>6; break; case 3:

mixIndex = mixIndex>>6; break; }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库BMP图片处理--C语言(2)在线全文阅读。

BMP图片处理--C语言(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/508631.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: