实现CGI程序显示一幅图片最核心的功能

把上一节课编写好的led.c程序拷贝过来,并重新命名为image.c

把led的某些部分删除,后如下

那么如何显示一幅图片呢,百度(搜索在html里面去插入图片)

这是一个原始的html代码,在cgi程序中需要把它打印到cgiout里面去

以上运行的话会出错,因为cgi找的根路径不是在开发板的根路径,而是在web服务器的根路径开始,也就是从web目录开始的,那么该怎么办呢

我们可以在web目录下创建一个软链接,链接到/mnt/sd/目录下面去

所以把上面的程序调整一下

把上面的图像分辨率修改为width="160" height="120"

由于除了fprintf要求的里面的引号外,还有src="/sd/%s"这里的引号,所以这里就需要使用转义字符来处理,修改如下

然后编译这个CGI程序

再把它拷贝到我的/web/cam/下面去

然后还要去修改首页index.html代码

上面可以显示图片了!

上面显示的界面太简陋了,我希望显示出来的界面更好一些

下面把首页index.html一分为二,一个叫做top.html,另一个叫做bottom.html

top.html的效果图

bottom.html的效果图

其代码如下图

下面就需要把image.c与top.html,bottom.html给拼接起来

主要是与这行拼接起来

我只需要把top.html与bottom.html读出来然后,打印到cgiout里面

做一个函数print_file,它的第一个参数为需要把文件信息打印到何处,即cgiout,第二个参数就是要打印的文件信息。

void print_file(FILE *dst_fp, const char *src) {  FILE *src_fp;  char line[1024];     src_fp=fopen(src, "r");//只读方式打开     while (NULL != fgets(line, 1024, src_fp)) //把数据读到字符数组line里面来,最后结果部位NULL   fputs(line, dst_fp);//最后结果不为NULL,则把数组里面的内容写到dst_fp    fclose(src_fp);   }

图片显示好看后的代码

现在已经实现了显示一幅图片的效果,下面要去显示我所抓取到的所有图片,

要完成以上工作,需要两步:

a、把要显示的图片的名字加到一个列表中来;

b、专门实现一个显示函数去显示这些列表中的图片。

要显示一个图片最关键的是要去知道它的名字,那么要创建的那个列表就是图片名字的列表,那么如何去获取这些文件名呢,我们应该到/mnt/sd目录里面把所有文件都遍历一遍,然后把文件名(后缀为.jpg的文件名)拷贝到列表里面去

那么我们首先要去定义一个列表,保存所有图片文件名字

struct pic_list {  char name[30];  }g_img[2000];//可保存2000个文件名

见图片加入列表

下面要显示这些图片

//2.显示图片

下面加上一个跳转的按钮,去选择观看那一页的图片

对页面跳转的处理可以分为两个步骤,第一是去加上一个下拉框;第二是处理用户的选择

处理用户的选择请求

最后实现查看监控视频

怎么在一个CGI程序中嵌入视频

阶段2-新手上路\项目-移动物体监控系统\Sprint4-嵌入式web服务器开发\第3课-CGI程序开发的更多相关文章

  1. 移动物体监控系统-sprint4嵌入式web服务器开发

    一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 c ...

  2. 阶段2-新手上路\项目-移动物体监控系统\Sprint3-移动监控主系统设计与开发

    移动图像监控系统 去找一些相关开源程序进行移植:百度搜索-linux 移动监控 motion是一套免费开源的移动图像监测程序 前面我们已经使用了很多开源软件,他们的使用方法都是大同小异的 1).先在当 ...

  3. 第5季-小试牛刀-项目开发\阶段2-新手上路\项目-移动物体监控系统\Sprint0-产品设计与规划

    lesson1---产品功能展示 先完成准备阶段,准备阶段要做的事情: a.项目经理选择团队, b.根据项目用户需求以及同类型的实物,制定产品功能列表 c.根据功能的难易程度,制定迭代周期以及在每周期 ...

  4. 阶段2-新手上路\项目-移动物体监控系统\Sprint1-声音报警子系统开发\第1节-Sprint Backlog规划

    根据之前的sprint1-声音报警子系统是相对比较大的一个需求,需要把它进一步细化,然后指定sprint Backlog product Backlog是整个产品的功能列表! sprint Backl ...

  5. 阶段2-新手上路\项目-移动物体监控系统\Sprint2-摄像头子系统开发\第2节-V4L2图像编程接口深度学习

    参考资料: http://www.cnblogs.com/emouse/archive/2013/03/04/2943243.htmlhttp://blog.csdn.net/eastmoon5021 ...

  6. 移动物体监控系统-sprint3移动监控主系统设计与开发

    一.移动监控的原理 通过获取摄像头图像,比较前后每一帧的图像数据,从而实现移动物体监控.所有移动监控原理都是这样,只是图像帧的对比的算法不一样. 二.移动物体监控系统的实现 选择开源的移动监控软件mo ...

  7. VS2012打开项目 提示Asp.net4.5未在web服务器上注册

    在用vs2012代开项目时,没回都显示Asp.net4.5未在web服务器上注册,最后是由于没有下载一个补丁的原因,只需要下载安装补丁 VS11-KB3002339.exe ,下载地址:https:/ ...

  8. 安装VS2017后打开项目提示 asp.net 4.0尚未web服务器注册

    Visual Studio 2017 出来了,手痒安装完成后打开原来的项目缺提示,asp.net 4.0尚未web服务器注册.郁闷了… 按照提示的方法,如何:将 ASP.NET Web 应用程序升级到 ...

  9. 移动物体监控系统-sprint2摄像头子系统开发

    一.摄像头使能驱动 1.1 摄像头软件系统构架 摄像头采集系统按照上图,硬件(摄像头)->摄像头驱动 ->V4L2接口规范 ->图像采集(应用).V4L2将不同类型的摄像头设备按照统 ...

随机推荐

  1. mini2440移植uboot 2011.03(上)

    参考博文: <u-boot-2011.03在mini2440/micro2440上的移植> 本来我想移植最新版的uboot,但是移植却不太成功,所以先模仿他人的例子重新执行一遍,对uboo ...

  2. <HTTP协议详解>由浅入深看HTTP

    一. HTTP协议的应用简单概况 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式.2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST ...

  3. 利用Tkinter做的自动生成JSONSchema的小工具

    前面讲到可以使用JSONSchema做json数据校验, 但是每个接口数据都手动写jsonschema太痛苦了, 就写了个小脚本,可以直接复制接口文档的mock数据然后生成一个简单的jsonschem ...

  4. ML二(决策树学习)

    决策树学习 Decision Tree Learning 1 基本概念 属性(attribute):树上的每个结点说明了对实例的某个属性的测试,该结点的每一个后继分支对应该属性的一个可能值. 熵(en ...

  5. 常见ETL工具一览,你知多少?

    这些年,几乎都与ETL打交道,接触过多种ETL工具.现将这些工具做个整理,与大家分享. 一 ETL工具[国外] 1. datastage点评:最专业的ETL工具,价格不菲,使用难度一般 下载地址:ft ...

  6. Tomcat_异常_01_Setting property 'source' to 'org.eclipse.jst.jee.server:AWeiXin_QiYe_Demo' did not find a matching property

    关于解决方法: 1.解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题 2.eclipse中server location为灰色 ...

  7. hsv空间

    hsv在不同的软件中,有不同的阈值, 在描述阈值之前,看一下它的定义,按照标准的定义,hsv应该是从0°到360°的一个环,加上一个表示亮度的轴,重点就是那个环. 这个环如图一,0°一般为红色120° ...

  8. ACM学习历程—SGU 275 To xor or not to xor(xor高斯消元)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=275 这是一道xor高斯消元. 题目大意是给了n个数,然后任取几个数,让他们xor和 ...

  9. bzoj 4044: Virus synthesis 回文自动机

    题目大意: 你要用ATGC四个字母用两种操作拼出给定的串: 将其中一个字符放在已有串开头或者结尾 将已有串复制,然后reverse,再接在已有串的头部或者尾部 一开始已有串为空.求最少操作次数. le ...

  10. 【LeetCode】001. Two Sum

    题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...