c语言保存bmp函数,c读取bmp图片

C语言 保存BMP文件

你是怎么处理的呢,处理后的数据在哪呢。在数组中吗,还是说直接在原文件上处理了。

10多年品牌的成都网站建设公司,上1000+企业网站设计经验.价格合理,可准确把握网页设计诉求.提供定制网站建设、商城网站建设小程序设计、响应式网站等服务,我们设计的作品屡获殊荣,是您值得信赖的专业网站建设公司。

另存为,就是用“wb”方式另外创建一个空文件,把这些数据按照BMP的格式写进去。

怎么用C语言将BMP图片存放为文本文件

读取BMP的各个位

将每位的二进制值

转成对应的ascii码值 比如16进制。

举个例子,如果bmp中 是字符串abcd

那么就在文本中存61626364

如何将bmp格式文件转化为二进制数据存储起来,(C语言哦!)

bmp文件本来就是以二进制存储的.

bmp文件的结构如下:

typedef struct//BMP文件的文件头

{

char bfType[2];

long bfSize;

int bfReserved1;

int bfReserved2;

long bfOffBits;

}BMPHEAD;

typedef struct//点位图信息

{

long biSize;

long biWidth;

long biHeight;

int biPlanes;

int biBitCount;

long biCompress;

long biSizeImage;

long biXPelsPerMeter;

long biYPelsPerMeter;

long biClrUsed;

long biClrImportant;

}BMPINFO;

typedef struct//颜色表

{ unsigned char blue;

unsigned char green;

unsigned char red;

unsigned char reaserved;

}RGB;

bmp文件保存时,先存上面的三个结构体的数据,之后是图像数据.具体信息可查相关书籍

怎么用C语言读入、转存一个 BMP图片啊。。。

给你C++的代码吧呵呵,C的也差不多,稍微修改一下就行了

主要是你要了解BMP文件的结构,就是文件头那里所包含的信息,这里用了BITMAPINFOHEADER等现成的结构体来处理,BMP的文件头百度一下就知道的啦,很多资料

#include

"fstream.h"//24bit

bitmap

bool

CBitmapWindow::LoadFile

(char

*bmpFile)

{

FILE

*fp;

if((fp=fopen(bmpFile,"rb"))==NULL)

return

false;

WORD

bfType;

DWORD

bfSize;

WORD

bfReserved1;

WORD

bfReserved2;

DWORD

bfOffBits;

BITMAPINFOHEADER

bih;

fread(bfType,sizeof(WORD),1,fp);

if(bfType!=0x4d42)

return

false;

fread(bfSize,sizeof(DWORD),1,fp);

fread(bfReserved1,sizeof(WORD),1,fp);

fread(bfReserved2,sizeof(WORD),1,fp);

fread(bfOffBits,sizeof(DWORD),1,fp);

fread(bih,sizeof(BITMAPINFOHEADER1),1,fp);

nWidth=bih.biWidth

;

nHeight=bih.biHeight;

if(nWidth

%

4

!=0)

nWidth=nWidth+

(4-nWidth

%

4);

//修正位图宽度值

DWORD

size=nWidth*bih.biBitCount/8*nHeight;

arrayColor=new

ZafLogicalColor[nWidth*nHeight];

//

LPSTR

pData=new

char[size];

unsigned

char*

pData=new

unsigned

char[size];

fread(pData,size,1,fp);

int

bmWidthBytes=nWidth*bih.biBitCount

/8;

int

bmBitsPixel=bih.biBitCount

;

int

nBit=bmBitsPixel/8;

colorTableBitmap*

clrTableBmp;

clrTableBmp=new

colorTableBitmap[nWidth*nHeight];

char

cBit[40];

int

z;

for

(int

y=0;ynHeight;y++)

{

for

(int

x=0;xnWidth;x++)

{

z=nHeight-y-1;

clrTableBmp[y*nWidth+x].nIndex

=y*nWidth+x;

clrTableBmp[y*nWidth+x].iBlue

=pData[x*nBit+z*bmWidthBytes];

clrTableBmp[y*nWidth+x].iGreen

=pData[x*nBit+1+z*bmWidthBytes];

clrTableBmp[y*nWidth+x].iRed=pData[x*nBit+2+z*bmWidthBytes];

sprintf(cBit,",%d:%d:%d:%d",y*nWidth+x,pData[x*nBit+z*bmWidthBytes],

pData[x*nBit+1+z*bmWidthBytes],

pData[x*nBit+2+z*bmWidthBytes]);

}

}

delete

[]clrTableBmp;

delete

[]pData;

fclose(fp);

return

true;

}

我想用c语言将一个黑白bmp图像的像素值存入一个数组中该怎么做?求各位大神帮忙啊~~

先解析bmp图像的格式, windows 下面有 API和bmp头结构,bmp头貌似有3个部分, 算出像素数据的偏移量。然后二进制读文件,保存到数组即可。


网站名称:c语言保存bmp函数,c读取bmp图片
网站链接:http://scjbc.cn/article/hesghd.html

其他资讯