用c语言如何读取和保存jpg图片文件?有这样一个二进制文件,大小在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;
nf.Open(dstfile,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
unsigned
t=0,t1=0;
nf.Write(a,sizeof(char));
nf.Write(b,sizeof(char));
while(1)
{
sfp-Read(t,sizeof(char));
len++;
nf.Write(t,sizeof(char));
if(t==0xFF)
{
sfp-Read(t1,sizeof(char));
len++;
if(t1==0xD9)
break;
else
nf.Write(t1,sizeof(char));
}
}
nf.Close();
}
调用:
void
test()
{
CFile
fp;
fp.Open("86b05621.jpg",CFile::modeRead|CFile::typeBinary);//文件名改一下
unsigned
char
a=0,b=0;
len=0;
while(1)
{
fp.Read(a,sizeof(char));
len++;
if(len=fp.GetLength())
break;
if(a==0xFF)
{
fp.Read(b,sizeof(char));
len++;
if(b==0xD8)
{
filesn++;
char
filename[256];
sprintf(filename,"Jpg
%d.jpg",filesn);
ReadJpg(fp,filename,a,b);
}
}
}
【c语言保存图片函数 c语言怎么保存数据文件】fp.Close();
}
思路是,先得到FF的值,然后再判断下一位是否是0xD8,
但这里要说明一下,如果你的其它数据信息里也含有FF
D8值的话就会出错了,
所以为保险起见,应该再多比较几位,
JPG的头是固定的,再往下就是EF
E0
00
1E,
建议楼主再往下比较四位比较保险(在程序中稍作修改即可)
你是不是在
分析某个
游戏的或程序的资源文件呀,如果是的话,这个资源文件应该配有一个
索引文件!或在其文件自身 。索引可以列表索引,链表形示……
如果是你自已生成的文件包,最好加上索引,因为这样可以提高效率!
c语言的图形函数库有哪些图形和图像函数包含在graphics.h里面(一) 像素函数56. putpiel() 画像素点函数57. getpixel()返回像素色函数(二) 直线和线型函数58. line() 画线函数59. lineto() 画线函数60. linerel() 相对画线函数61. setlinestyle() 设置线型函数62. getlinesettings() 获取线型设置函数63. setwritemode() 设置画线模式函数(三)、多边形函数64. rectangle() 画矩形函数65. bar() 画条函数66. bar3d() 画条块函数67. drawpoly() 画多边形函数(四)、 圆、弧和曲线函数68. getaspectratio()获取纵横比函数69. circle()画圆函数70. arc() 画圆弧函数71. ellipse()画椭圆弧函数72. fillellipse() 画椭圆区函数73. pieslice() 画扇区函数74. sector() 画椭圆扇区函数75. getarccoords()获取圆弧坐标函数(五)、 填充函数76. setfillstyle() 设置填充图样和颜色函数77. setfillpattern() 设置用户图样函数78. floodfill() 填充闭域函数79. fillpoly() 填充多边形函数80. getfillsettings() 获取填充设置函数81. getfillpattern() 获取用户图样设置函数(六)、图像函数82. imagesize() 图像存储大小函数83. getimage() 保存图像函数84. putimage() 输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的 。但对有些图形只能靠操作单个像素才能画出 。当然如果没有画像素的功能,就无法操作直线和曲线的函数 。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加 。(一) 像素函数56. putpixel() 画像素点函数功能: 函数putpixel() 在图形模式下屏幕上画一个像素点 。用法: 函数调用方式为void putpixel(int x,int y,int color);说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值 。此函数相应的头文件是graphics.h返回值: 无例: 在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);57. getpixel()返回像素色函数功能: 函数getpixel()返回像素点颜色值 。用法: 该函数调用方式为int getpixel(int x,int y);说明: 参数x,y为像素点坐标 。函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数) 。这个函数相应的头文件为graphics.h返回值: 返回一个像素点色彩值 。例: 把屏幕上(8,6)点的像素颜色值赋给变量color 。color=getpixel(8,6);
推荐阅读
- 电脑推荐什么管家,电脑什么管家好用
- 包含鸿蒙系统可以合盖息屏么的词条
- nova能不能升级到鸿蒙系统,nova能不能升级到鸿蒙系统版本
- 手机如何给ppt添加作者,手机做ppt怎样添加背景图
- c语言编写sin函数程序 用c语言写sin函数
- u盘怎么从电视下载东西,u盘怎么在电视上播放视频
- sap德国排名,德国sap公司简介
- 私人直播漫画软件,私人直播漫画软件哪个好
- go语言流操作 go语言技巧