总结:
通过此次创新实践课程,学习到了很多知识和技术。比如:如何做一个小型的搜索引擎,如何使textbox具有信息提示功能,如何获取照片(jpg或jpeg格式)的EXIF信息!等等。原本想只做对图片进行 名称 的关键字匹配搜索,后来找了关于图片的EXIF信息的资料后,逐渐慢慢有头绪做关于根据图片的EXIF信息对图片进行搜索的功能. (具体功能在下面)。
基本上想到的搜索都已经实现,不足之处有二。其一,在于获取照片的GPS信息,并根据此来进行搜索。查找资料时发现并不是所有的相机都支持将GPS 信息记录到照片的EXIF信息中。其二,是想做出和Google的图片软件 Picasa 的一种功能,即可以加入自己对图片的描述,并以此进行搜索,却一直没有思路。。。希望在四月份的计算机学院举办的电脑节结束之前,将此功能实现并完善!
一.软件模块功能:
1 根据输入的关键字查找含有 该关键字的图片。
2 单击选中图片后 ,显示图片的EXIF信息。
3 根据照片的 曝光度 来搜索照片
4 根据照片的 ISO 速率 来搜索照片
5 根据照片的 相机名称 来搜索照片
6 根据照片的 光圈大小来搜索照片
7 根据照片的 焦距 来搜索照片
8 可以以不同方式显示图片。
9 . 搜索提示功能。
其中 根据名称搜索为关键字搜索.即关键字匹配,含有关键字的图片都能被搜索出来!其余的搜索功能必须严格匹配。
二.关于 EXIF 信息的介绍。
1 EXIF,是英文Exchangeable Image File(可交换图像文件)的缩写。EXIF是一种图像文件格式,只是文件的后缀名为jpg。EXIF信息是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在jpg文件的头部,也就是说EXIF信息是镶嵌在JPEG图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。不管是硬件厂商的配套软件还是专业名门的看图工具,所有这些软件都是为了方便数码摄影者能更方便地保存查看摄影图像的重要信息。
2 如何获取EXIF信息
在.NET中,我们可以用PropertyItem对象来获取jpg 图片的EXIF信息。取得PropertyItem很简单。
Image img = Image.FromFile("支持Exif的图片文件路径");
PropertyItem[] pt = img.PropertyItems;
这样就可以了,Exif信息都已载入到PropertyItem数组中了。其中PropertyItem的ID,Type,Value属性是最重要的。
ID可以唯一表明当前PropertyItem的含义。比如,0x010F代表相机制造商,0x8827代表ISO速度,0x829D代表相机。
Value永远都是字节数组,但具体内容的取值方法随Type不同而不同。
Type是个整数,表示的类型在MSDN中是这么描述的:
1 指定 Value 为字节数组。
2 指定 Value 为空终止 ASCII 字符串。如果将类型数据成员设置为 ASCII 类型,则应该将 Len 属性设置为包括空终止的字符串长度。例如,字符串“Hello”的长度为 6
3 指定 Value 为无符号的短(16 位)整型数组。
4 指定 Value 为无符号的长(32 位)整型数组。
5 指定 Value 数据成员为无符号的长整型对数组。每一对都表示一个分数;第一个整数是分子,第二个整数是分母。
6 指定 Value 为可以包含任何数据类型的值的字节数组。
7 指定 Value 为有符号的长(32 位)整型数组。
10 指定 Value 为有符号的长整型对数组。每一对都表示一个分数;第一个整数是分子,第二个整数是分母。
所以获取Exif信息的算法重点在于如何根据Type值将Value字节数组变成人类可以理解的值。
待续。。。。。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-631389/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22664653/viewspace-631389/