C语言读写图片文件问题

C语言读写图片文件问题,第1张

BMP位图文件有它的属性,我们如果不读取他的属性的话,无法对它的 *** 作,

所以BMP位图文件包括1位图文件头(记录位图文件的特征到真正图像数据的偏

移量文件大小等等信息)2位图信息头(记录的就是位图的大小,每个像素占的位

数,是否压缩等等信息)3调色板(如果位图信息头里面的每个像素的位数小于24

位,就需要调色板)4真正的位图数据

为什么产生误区我觉得真正的原因是你没有明白什么是文件

文件就是把一些数据组织起来,并保存它们

而正因为数据的组织不同,所以就构成了不同的文件类型

而文件的后缀名是文件被组织了后,人民为了区别它和其他文件格式的不同而自

己取的一个名字

比方说,我这个数据是按文本组织的。那么你不管把改为什么后缀名,它还是文本

文件

以后学文件的时候别看它的后缀名,而要看它的文件的存贮实质

人们开发出来的文件格式,都有他们不同的组织方式,不是说BMP有头信息,

人家一定都要有

有这样一个二进制文件,大小在100M左右,里面存放了多张JPG,文件格式如下:

无关数据区

JPG数据区

无关数据区

JPG数据区

无关数据区

JPG数据区

已知JPG起始标志为:“FF

D8

FF

E0

00

10

4A”,结束标志为:“FF

D9”。

现想把这些JPG数据从该文件中读出来,生成一个个单独的文件,该如何做呢?

帮你写了个程序,

测试了只含有一个信息的文件

int

len=0;

int

filesn=0;

void

ReadJpg(CFile

sfp,const

char

dstfile,unsigned

char

a,unsigned

char

b)

{

CFile

nf;

nfOpen(dstfile,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);

unsigned

t=0,t1=0;

nfWrite(&a,sizeof(char));

nfWrite(&b,sizeof(char));

while(1)

{

sfp->Read(&t,sizeof(char));

len++;

nfWrite(&t,sizeof(char));

if(t==0xFF)

{

sfp->Read(&t1,sizeof(char));

len++;

if(t1==0xD9)

break;

else

nfWrite(&t1,sizeof(char));

}

}

nfClose();

}

调用:

void

test()

{

CFile

fp;

fpOpen("86b05621jpg",CFile::modeRead|CFile::typeBinary);//文件名改一下

unsigned

char

a=0,b=0;

len=0;

while(1)

{

fpRead(&a,sizeof(char));

len++;

if(len>=fpGetLength())

break;

if(a==0xFF)

{

fpRead(&b,sizeof(char));

len++;

if(b==0xD8)

{

filesn++;

char

filename[256];

sprintf(filename,"Jpg

%djpg",filesn);

ReadJpg(&fp,filename,a,b);

}

}

}

fpClose();

}

思路是,先得到FF的值,然后再判断下一位是否是0xD8,

但这里要说明一下,如果你的其它数据信息里也含有FF

D8值的话就会出错了,

所以为保险起见,应该再多比较几位,

JPG的头是固定的,再往下就是EF

E0

00

1E,

建议楼主再往下比较四位比较保险(在程序中稍作修改即可)

你是不是在

分析某个

游戏的或程序的资源文件呀,如果是的话,这个资源文件应该配有一个

索引文件!或在其文件自身。索引可以列表索引,链表形示……

如果是你自已生成的文件包,最好加上索引,因为这样可以提高效率!

Image im = ImageFromFile("c:\\SP_A0198jpg");

MessageBoxShow("长:" + imSizeHeightToString());

MessageBoxShow("宽:"+ imSizeWidthToString());

以上就是关于C语言读写图片文件问题全部的内容,包括:C语言读写图片文件问题、用c语言如何读取和保存jpg图片文件、c# 获取图片属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9829313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存