匿名用户

1级

2012-08-11 回答

有这样一个二进制文件,大小在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);

}

}

}

fp.Close();

}

思路是,先得到FF的值,然后再判断下一位是否是0xD8, 但这里要说明一下,如果你的其它数据信息里也含有FF D8值的话就会出错了, 所以为保险起见,应该再多比较几位, JPG的头是固定的,再往下就是EF E0 00 1E, 建议楼主再往下比较四位比较保险(在程序中稍作修改即可)

你是不是在 分析某个 游戏的或程序的资源文件呀,如果是的话,这个资源文件应该配有一个 索引文件!或在其文件自身。索引可以列表索引,链表形示……

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

c语言存储图像jpg,用c语言如何读取和保存jpg图片文件?相关推荐

  1. c oracle 存储图片,用c语言如何读取和保存jpg图片文件?

    #include #include #include int file_size(char* filename)//获取文件名为filename的文件大小. { FILE *fp = fopen(fi ...

  2. R语言如何单独保存输出图片文件

    前言:记得设置图片的保存工作路径,即数据文件路径:setwd("C:\Users\TDL\Desktop\test.picture") 1.图片文件保存输出 jpeg(file = ...

  3. python画的图怎么保存_python通过PyGame绘制图像并保存为图片文件的代码

    把开发过程中常用的一些内容片段记录起来,下边内容是关于python通过PyGame绘制图像并保存为图片文件的内容,希望对大伙有较大好处. ''' pg_draw_circle_save101.py d ...

  4. 【OpenCV 例程 300篇】253. 多帧图像(动图)的读取与保存

    『youcans 的 OpenCV 例程300篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]253. 多帧图像(动图)的读取与保存 1. 多帧图像(动图) 多帧图像是将多幅图像 ...

  5. c语言存储类型重要吗,C语言储存类别(Storage Class)

    C语言存储类别(Storage Class) C语言中,存储类别(Storage Class)是一个标识符(也就是说函数和变量)的重要属性.存储类别决定着一个函数或变量的作用域(Scope,即可见性) ...

  6. 基于c语言的图像边缘检测,基于C语言的医学图像处理的设计

    内容介绍 原文档由会员 莎士比亚 发布 资源包括:正文DOC格式共41页 19611字 摘 要:B超图像作为医学图像的一个部分,具有医学数字图像的某些共性.B超图像处理技术作为医学数字图像处理技术的一 ...

  7. c语言存储类型关键字作用,C语言, 存储类型关键字?

    1.C语言的数据类型分类 C语言的数据类型分类: 基本数据类型: 整型int 字符型char 浮点型: 单精度浮点型float 双精度浮点型double 构造数据类型: 数组(如int a[]) 结构 ...

  8. c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等

    关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...

  9. c语言shengchen图像,430编程C语言常识(IAR)(二)结构体与联合体

    回复: 107 430编程C语言常识(IAR)(二)结构体与联合体 (288035412) 出0入0汤圆 电梯直达 发表于 2012-4-7 18:36:29 | 只看该作者 |倒序浏览 |阅读模式 ...

最新文章

  1. 一种用于三维物体建模的精确、鲁棒的距离图像配准算法
  2. HBase - Phoenix剖析
  3. js中两个感叹号的原理与用法分析
  4. Linux环境配置1
  5. 通过IFeatureClass 接口查询 IWorkspace, 查询通配符
  6. ios项目icon和default图片命名规则
  7. word List 19
  8. 无盘服务器为什么重启还原,无盘站反复重启怎么办
  9. 关于sqoop增量导入oracle的数据到HDFS的出现的错误总结
  10. 斑马打印机怎么打印二维码_简单介绍斑马打印机---GX430t
  11. jmeter无法启动的解决办法
  12. 你对Redis持久化了解多少?一篇文章让你明白Redis持久化
  13. 地理空间数据云 数据
  14. 中国裁判文书下载:selenium路线
  15. 浅读《图解密码技术》--学习笔记
  16. excel数据自动录入网页_Excel自动抓取网页数据,数据抓取一键搞定
  17. 论“蹭热点”,我只服“杜蕾斯”,今天咋们一起来盘点 它曾蹭过的10大神热点!...
  18. 反正切函数的应用解题报告
  19. UEStudio中进行文件编码转换
  20. echarts 修改tooltip字体大小

热门文章

  1. Python之禅及其翻译
  2. Tensorflow图像识别-2
  3. 初学Python-反射 装饰器 面向对象编程 异常处理 断言
  4. 企业微信(H5打开)调用微信小程序
  5. 排序算法 之希尔排序及时间复杂度分析
  6. SYSCALL_DEFINEx宏源码解析
  7. UE5 学习2- 快捷键
  8. 工业机器人(四)——传感元件制作
  9. 数据分析 - 跨境电商爬虫成长记 之 第三篇:完整的爬虫工作环节有哪些
  10. 虚拟化桌面设备输入法