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

/*

** 这个程序是读取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语言读取raw格式图像,求指导,如何用c语言实现读取*.raw格式图像相关推荐

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

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

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

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

  3. c语言 遍历.jpg图像,求指导,如何用c语言实现读取*.raw格式图像

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

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

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

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

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

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

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

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

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

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

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

  9. C语言编程答案保留三位小数,如何用c语言求倒数,保留3位有效数字

    名称定义 所谓有效数字:具体地说,是指在分析工作中实际能够测量到的数字.所谓能够测量到的是包括最后一位估计的,不确定的数字. 我们把通过直读获得的准确数字叫做可靠数字;把通过估读得到的那部分数字叫做存 ...

最新文章

  1. U盘安装Ubuntu14.4时遇到分区问题记录
  2. 2021入坑图像分割,我该从哪儿入手?
  3. 新手用python2还是3-Python 使用情况调查:2还是3?(附致歉声明)
  4. vue-cli安装、node-sass安装、mintUI组件库安装
  5. Machine Monitoring System Document
  6. python如何定义类_Python中类的定义、继承及使用对象实例详解
  7. 用numpy操作矩阵,上三角,下三角矩阵,对角化矩阵
  8. kivy中文手册python_K-Meleon
  9. Git的使用教程(三)
  10. 省公务员县公安局,县编办,县政府办,县保密局,这几岗位怎么选?
  11. python error: no module named pylab的解决
  12. SqlTransaction事务和Response.Redirect
  13. python热成像_matplotlib实现热成像图colorbar和极坐标图的方法
  14. oppo 手机计算机历史记录,粘贴板历史记录
  15. android获得cache路径,android取得当前程序File与Cache路径!
  16. js中统一社会信用代码校验规则
  17. SQL-根据生日计算年龄
  18. python txt文本特定字符串提取
  19. i.MX6ULL终结者屏幕背光调节例程程序设计
  20. BACnet/IP网关如何采集楼宇集中控制系统数据

热门文章

  1. 周口a货翡翠,泸州a货翡翠
  2. jenkins 实践
  3. 华为P20 Pro销售火爆卖断货?淘宝商家加价卖
  4. Java实现一个简单的加密解密方法
  5. 单独编译apache的rewrite模块
  6. 自定义UISlider的外观
  7. 如何对Windows Server 2008上的ARP缓存进行管理
  8. xen虚拟化实战系列(二)之xen虚拟机安装
  9. springboot的api_【粉丝投稿】无需额外注解的 SpringBoot API文档生成工具
  10. r中gglot怎么组合多张图_最终版本Science级组合图表绘制