该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*

** 这个程序是读取jpg图像的

** 后续加上jpg图像打开和存放

*/ #include

#include

#include

#include

#include #define SOI 0xD8 //文件头

#define EOI 0xD9 //文件尾

#define APP0 0xE0 //定义交换格式和图像识别信息

#define SOF0 0xC0 //帧开始(标准 JPEG)

#define DQT 0xDB //定义量化表

#define DHT 0xC4 //定义 Huffman 表(霍夫曼表)

#define SOS 0xDA // 扫描行开始

#define DRI 0xDD //定义重新开始间隔

#define COM 0xFE //注释 unsigned short jpgWidth; //图像的宽

unsigned short jpgHeight; //图像的高

unsigned char bitDepth; //图像类型,每像素位数

unsigned short jpgXpelsPerMeter; //水平分辨率

unsigned short jpgYpelsPerMeter; //垂直分辨率

unsigned char SOF_find=0; char readPath[100]; //图像路径

unsigned char CurrentByte; //当前字节

unsigned short CurrentWord; //当前word

unsigned int BytePos; //当前字节的位置 bool readjpg(char *jpgName); //读取路径

void showjpg(); //显示

void GetJpgSize(FILE *fp); //获取大小 /****************************分割线**************************************/

bool readjpg(char *jpgName)

{

unsigned char Flag_1,Flag_2; //文件头 FFD8

unsigned short Xdensity,Ydensity;

/*unsigned char SOS_find=0;

unsigned int FileLength;

unsigned char Length;*/

//二进制读方式打开指定的图像文件

FILE *fp;

fp=fopen(jpgName,"rb");

if(fp==0)

{

perror("jpgName"); //提示错误信息

getch();

exit(EXIT_FAILURE); //出现错误,终止程序。

} /*

判断文件类型是否为JPG

检查第1, 2字节

*/

fread(&Flag_1,1,1,fp);

fseek(fp,1L,0);

fread(&Flag_2,1,1,fp);

if(( Flag_1 != 0xff) || (Flag_2 != 0xd8) )

{

printf("Not a jpg file?? (SOI)\n");

exit(EXIT_FAILURE);

}

//开始寻找开始位置

GetJpgSize(fp); fclose(fp);

return 1;

} void showjpg()

{

//窗口大小为图片大小

initgraph(jpgWidth,jpgHeight+40);

setbkcolor(WHITE);

setcolor(BLACK);

cleardevice(); setfont(16, 8, "宋体");

char width[5],height[5];

sprintf(width, "%d",jpgWidth);

sprintf(height, "%d",jpgHeight); outtextxy(0,0,"图像的宽:");

outtextxy(10+textwidth("图像的宽:"),0,width); outtextxy(jpgWidth/2,0,"图像的高:");

outtextxy(jpgWidth/2 + 10 + textwidth("图像的高"),0,height); IMAGE img; // 定义 IMAGE 对象

loadimage(&img, readPath); //读取图片到 img 对象中

putimage(0, 40, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象 getch();

closegraph();

} //获取照片尺寸大小

void GetJpgSize(FILE *fp)

{ unsigned char HeightH;

unsigned char HeightL;

unsigned char WidthH;

unsigned char WidthL;

unsigned char BitDepth;

while(!SOF_find)

{

CurrentByte=fgetc(fp);

if(CurrentByte!=0xFF)

continue;

//发现标记符

CurrentByte=fgetc(fp);

switch(CurrentByte)

{

case APP0: break;

case SOF0:

fseek(fp,2L,1); BitDepth=fgetc(fp); //图像高的高位和低位

HeightH=fgetc(fp); HeightL=fgetc(fp); //图像宽的高位和低位

WidthH=fgetc(fp); WidthL=fgetc(fp); SOF_find=1;

break;

default:

break;

}

}

jpgHeight=HeightH * 256 + HeightL;

jpgWidth=WidthH * 256 + WidthL; } void main()

{

printf("输入图像的完整路径及文件名:\n");

gets(readPath);

readjpg(readPath);

printf(" bitDepth=%x\n height=%x\n width=%x\n ",bitDepth,jpgHeight,jpgWidth);

printf(" jpgXpelsPerMeter=%x\n jpgYpelsPerMeter=%x\n",jpgXpelsPerMeter,jpgYpelsPerMeter); printf("按任意键显示图像\n");

getch();

showjpg();

}

C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像相关推荐

  1. C语言如何编程三点求圆方程,如何用C语言描述一个圆的方程

    满意答案 邪剑仙_绝 2017.11.23 采纳率:52%    等级:9 已帮助:763人 /*先写第一个吧,对于C图形库了解不多,我想你应该是少包含了哪个 头文件,或是没有设置编译器的图形库吧*/ ...

  2. C语言以字符串为索引求数组值,C05 C语言字符串和数组

    目录 数组 字符串 数组 概念 数组是有序数据的集合. 数组中的每一个元素属于同一个数据类型. 通过数组名和下标唯一确定数组中的元素. 一维数组的定义 语法格式 数据类型   数组名[常量表达式] 例 ...

  3. 用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件

    docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...

  4. python-docx库_用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件...

    docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...

  5. c语言偶数分解成两个素数,如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和....

    题目: 如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和. 我是大一新生,代码不能太复杂 解答: //首先生成质数表,然后双重循环输出2000以内所有偶数的两个 ...

  6. c语言 写出raw文件,求指导,如何用c语言实现读取*.raw格式图像

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...

  7. 如何保存文件为c语言格式,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  8. c语言软件电脑下载文件,求C语言头文件下载?

    传统 C++ #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> // ...

  9. c语言中保存到文件中,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

最新文章

  1. WMI技术介绍和应用——查询文件夹信息
  2. 参考答案:02 矩阵及其运算
  3. 9 个技巧,解决 K8s 中的日志输出问题
  4. 如何解决eclipse里面tomcat 8080端口被占用
  5. 怎么查看WordPress主题HTML,几个WordPress 主题在线检测工具
  6. 访问VirtualBox创建的CentOS虚拟主机里面的WEB服务
  7. 当集合a为空集时a的取值范围_1.2 集合间的基本关系20202021学年高一数学新教材配套学案(人教A版必修第一册)...
  8. Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  9. 【服务器】【私有云】宝塔安装KodExplorer
  10. vue滑块滑动校验,兼容移动端/pc端
  11. linux shell通过i2cget命令获取I2C器件寄存器的值
  12. 台电 8G U盘通过量产程序实现USB-CDROM启动
  13. 松下机器人找原点步骤_松下机器人操作规程
  14. 动图体积太大怎么缩小?教你一招快速压缩gif
  15. matlab拟合曲线poly交点,matlab 离散曲线求交点
  16. 关于vs2013弹出“正在初始化模板“的问题
  17. matlab编程求卫星轨道长度,GPS卫星轨道计算及其MATLAB仿真.pdf
  18. 按计算机应用领域分类,按计算机用途分类
  19. miui11开发版升级Android10,小米9透明版MIUI11开发版系统刷机包(最新固件系统升级包MIUI11.9.12.31开发版安卓10)...
  20. java注解和反射详解

热门文章

  1. linux下tmp目录属性,Linux:文件夹属性及umask
  2. 同一个容器实例可以同时运行在多个宿主机_从零开始学K8s: 3.什么是容器
  3. 原生js设置div隐藏或者显示_JavaScript动画方式控制div元素的隐藏和显示
  4. squid服务配置(正向、反向代理)
  5. 数据科学中的简单线性回归
  6. java bitset_Java BitSet length()方法与示例
  7. java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解
  8. 使用Nodejs搭建server
  9. 怎么证明建立了存储过程_【Filecoin源码仓库全解析】第七章:了解PoRep与PoSt并参与复制证明游戏
  10. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...