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

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

/*

** 这个程序是读取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();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js当前时间格式化_JS时间格式化

因为new Date().toLocaleString() 在安卓和ios上的格式不一致,所以尽量自己写format生成一个时间数组作为一个简单的举例,我序列化一周的时间对象声明参数let lastMonth []let daylong 86400000判断时间值是否小于9const formatNumber num > { num…

android json传输数据到服务器,Android中post请求传递json数据给服务端的实例

在最近的项目中有个需求是这样的:入参封装成JSON,EXAMPLE:{ "uuid": "iamauuid","clientType": "AND","content": "{\"gender\":\"F\",\"name\":\&qu…

springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程

springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步&#xff1a; 1. 在项目中导入maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.4.0</versi…

window.print 点击取消后再次打印无效_教程 | 图书馆自助复印打印机使用方法

图书馆自助复印打印机教程当当当&#xff01;教程君又来辽~今天为大家介绍的是咱们图书馆霸气十足的自助复印打印机实行全程无人化管理为读者提供自助打印、复印、扫描服务是你学习的小帮手&#xff01;实行全程无人化管理为读者提供自助打印、复印、扫描服务读者可在校园内任意…

android 支付模块封装,Android集成支付----支付宝支付总结与封装

前言类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章)&#xff0c;本文对支付宝支付进行一个总结与封装。相比于微信支付&#xff0c;支付宝支付没有那么多坑。集成支付宝支付SDK这里只是简要介绍&#xff0c;重点解说有坑的地方&#xff0c;具体参考官…

Springboot系列之Shiro、JWT、Redis 进行认证鉴权

Springboot系列之Shiro、JWT、Redis 进行认证鉴权 Shiro架构 Apache Shiro是一个轻量级的安全框架 Shiro可以非常容易的开发出足够好的应用&#xff0c;其不仅可以用在JavaSE环境&#xff0c;也可以用在JavaEE环境。 Shiro可以帮助我们完成&#xff1a;认证、授权、加密、会…

kettle 先删除后插入_Kettle:使用触发器和快照表进行增量数据同步

主库为Oracle 11g数据库&#xff0c;针对需要同步的表建立增量数据临时表以及反向并通过水壶定时同步到PostgreSQL数据库。1&#xff0c;主库创建快照表和快照注意&#xff1a;快照表结构和源表结构必须一致&#xff01;--创建插入快照表 CREATE TABLE SPWUSER.WEB_CUSTOMER_IN…

c 语言中fgetc函数,C 库函数 - fgetc()

描述C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符)&#xff0c;并把位置标识符往前移动。声明下面是 fgetc() 函数的声明。int fgetc(FILE *stream)参数stream -- 这是指向 FILE 对象的指针&#xff0c;该 FILE 对象标识了要在上面执行操…

SpringBoot中使用Shiro和JWT做认证和鉴权

最近新做的项目中使用了shiro和jwt来做简单的权限验证&#xff0c;在和springboot集成的过程中碰到了不少坑。做完之后对shiro的体系架构了解的也差不多了&#xff0c;现在把中间需要注意的点放出来&#xff0c;给大家做个参考。 相对于spring security来说&#xff0c;shiro出…

python 数字大小排序_python list字符按数字大小排序

python list字符按数字大小排序在把list写到csv过程中&#xff0c;遇到一个list的排序问题&#xff0c;list中存放的是数字字符&#xff0c;需要按数字大小来排序测试源码testList [1, 5, 2, 10, 50, 21, 31, 3, 7]print(testList{}.format(testList))normalSortList testLis…

android 手机wifi重启,路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢!...

没WiFi&#xff0c;不成活&#xff01;手机和WiFi之间&#xff0c;就像空调加棉被&#xff0c;谁也离不开谁。图片来源于网络如今WiFi已经填满了我们生活的每个角落&#xff0c;很难想象&#xff0c;如果哪天没了网&#xff0c;世界会变成什么样&#xff01;可是家里的WiFi是越…

windows和linux系统下测试端口连通性的命令

文章目录1. ping2. telnet3. ssh4. curl5. wget6. tcping总结1. ping ping命令只能测试某个IP通不通&#xff0c;不能测试某端口的连通性。因为ping命令是基于ICMP协议&#xff0c;是计算机网络中的网络层的协议&#xff0c;但是想要测试某个的连通性&#xff0c;需要用传输层…

python写windows程序_【Python学习】Python 写Windows Service服务程序

如下遇到自己编写的服务无法启动需要添加环境变量(标红的)C:\Python27\Scripts;C:\Python27\;C:\Python27\chromedriver.exe;C:\Python27\Lib\site-packages\win32;C:\Python27\Lib\site-packages\pywin32_system32;1.需求为什么要开发一个windows服务呢&#xff1f;之前做一个…

关于Apache Commons-Lang3的使用

关于Apache Commons-Lang3的使用 在日常工作中&#xff0c;我们经常要使用到一些开源工具包&#xff0c;比如String&#xff0c;Date等等。有时候我们并不清楚有这些工具类的存在&#xff0c;造成在开发过程中重新实现导致时间浪费&#xff0c;且开发的代码质量不佳。而apache…

linux 查看ip_如何在 Linux 中查看可用的网络接口 | Linux 中国

对于某些人来说&#xff0c;他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置。众所周知&#xff0c;为了在命令行中进行网络设定的配置&#xff0c;我们首先必须知道系统中有多少个可用的网络接口。-- Sk在我们安装完一个 Linux 系统后最为常见的任务便是网络配置…

SpringBoot的整合————一些常用工具类依赖及用法总结

文章目录概述:&#xff08;1&#xff09;Hutool&#xff08;2&#xff09;fastjson&#xff08;3&#xff09;commons-lang3&#xff08;4&#xff09;poi概述: 为了简化我们的开发代码&#xff0c;我们常常在pom.xml文件中引入一些工具类的依赖来方便我们的开发&#xff0c;本…

android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库

随着社会经济的快速发展&#xff0c;工作压力的进一步加大&#xff0c;如今人们对个人健康越来越关注&#xff0c;为了有效减轻家庭医疗支出同时&#xff0c;让人们足不出户就能享受到自身健康检测的高质量医疗服务&#xff0c;智能医疗监测系统成为关注的焦点。另一方面&#…

python教程下载百度云盘到手机_Python教程百度云盘哪里找

原标题&#xff1a;Python教程百度云盘哪里找Python是一门使用非常简单的编程语言&#xff0c;可以轻松应用于各种应用程序的开发。它的动态类型有助于代码简化和组合&#xff0c;是许多平台的解释性语言&#xff0c;成为众多程序员编程首选的便携式选项。也许&#xff0c;某天…

实现springboot的starter

什么是 Spring Boot Spring Boot 基本上是 Spring 框架的扩展&#xff0c;它消除了设置 Spring 应用程序所需的复杂例行配置。我们在使用 Spring 框架的时候&#xff0c;我们接触得比较多的应该是 Spring MVC、 IOC 、 DI 、AOP 等等&#xff0c;而这些框架在使用的过程中会需…

android多点触摸手势,安卓手势学习笔记(三) 多点触控

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;跟踪多个触点当多个手指同时触碰屏幕时&#xff0c;系统产生如下的事件&#xff1a;ACTION_DOWN –第一个触点。它启动了手势&#xff0c;在MotionEvent中该触点的…