EXIF在嵌入式系统文件回放功能中的应用

2014-01-15 09:34张洪涛
湖北工业大学学报 2014年4期
关键词:缩略图原图预览

王 洋,张洪涛

(1武汉船舶职业技术学院船舶与海洋工程学院,湖北 武汉430050;2湖北工业大学电气与电子工程学院,湖北 武汉430068)

在手持类设备中,经常需要读取内置/外置SD卡中存放的图片文件,并将读取的文件在屏幕上以文件列表的形式显示出来,即文件回放功能。比如手机相册中的图片预览功能、或者视频文件的回放功能等。在实际开发测试中,经常会有一个突出矛盾,当SD卡中存放的文件过多时,限于CPU的主频,文件回放速度会很慢。

可变换图像文件的英文缩写是EXIF(Exchangeable image file format),它是存储JPEG 图片的标准,最初是由日本电子工业发展协会(JEITA)制定。大多数的数码相机厂商都已经采用EXIF的标准,EXIF格式简单说,就是在JPEG格式上加上拍摄时的常见参数,比如焦距、白平衡、拍摄时间等数据以及相机品牌、拍摄时录制的声音以及GPS数据和缩略图等[1]。

1 方案论证

经过代码分析,可以知道在QT中实现文件回放的思路首先是通过指定的路径查找图片,然后按照图片的分辨率(比如640×480)逐行逐列读取文件,此时如果图片分辩率较大,则读取的数据量将相应变大,使得在同等硬件条件下读取速度变慢,即预览的效果会变差,比如手机相册翻页或者进入手机相册时等待时间变长。

假如文件回放时只是读取缩略图数据,因为缩略图的大小和原图相比将会成倍数变小,比如原图大小为640×480,而缩略图为160×120。此时根据推测,读取速度将会大大提升。而在PC机中,图片文件的预览都是通过缩略图来显示的。故采用在EXIF中插入图片的缩略图方法,对嵌入式系统的文件预览进行验证。

在实际应用中,使用一款手持类摄像仪来验证方案是否可行。

2 系统资源

该摄像仪系统核心板DM365板采用TI达芬奇(DaVinci)TMS320DM365芯片,该芯片具有双核视频 处理引 擎 (HDVICP、MJCP),128MB 32-bit DDR2内存,接口丰富(支持包括SD卡、SM 卡、MMC卡等),音视频处理能力比较优秀[2]。该平台在音视频领域应用广泛,因此实验结果有一定指导价值。

MMC/SD卡是日本松下、东芝及美国SanDisk公司于1999年8月共同研制的新一代记忆卡。本系统采用Sandisk的4G内存卡,DM365主要通过自带的SPI接口与SD卡进行数据读写。

该系统的软件系统采用Linux内核2.6版本,该版本对SD卡的驱动支持已经比较完善。该系统SD卡的软件框架见图1,整个框架中最重要的部分是Core核心层,它提供一系列的接口函数,对上将主机驱动注册到系统,对下支持主机控制器控制方法及块设备请求。本文主要介绍用户空间部分即文件系统的应用。

图1 Linux SD卡驱动代码框架图

3 软件实现

系统中SD卡的文件系统采用FAT32格式,目前在嵌入式操作系统linux2.6.32中已支持大于4 G容量的SD卡,为了保证测试结果的稳定性,在此采用的SD卡容量为4G。加载内核前,首先运行make menuconfig,在linux内核编译选项中勾选对SD/MMC接口的支持。配置选项见图2。接着将编译后的内核烧写到机器。

当插入SD卡后,机器会识别加载的设备,输入cat/proc/device,查看块设备信息,然后发现 mmc的设备,接着创建设备节点 mknod/dev/mmc b 254 0。最后挂载SD卡。

图2 Linux2.6.32内核配置选项

应用前要在机器中安装jhead开源软件,jhead是处理照片exif信息的命令行工具,因为机器操作系统为linux,而jhead是跨平台工具,可以直接应用。所使用的手持类设备拍摄的图片是jpg格式图片x.jpg,初始状态没有exif,故而首先通过jhead–mkexifx.jpg命令生成带有exif头的jpg图片X.jpg,原图大小为640×480像素,然后采用命令jhead–rtx.jpg XXX.jpg将160×120像素的缩略图XXX.jpg嵌入到exif头中。采用以上步骤实现文件回放图片的处理工作。

如果用户此时需要进入机器的文件回放功能,就要使用QT来读取exif中的缩略图来实现文件回放功能。QT中具有能将缩略图提取成QImage的类JpegThumbnailFetcher。该类提供了fetchThumbnail方法,返回值为QImage类型的缩略图,将生成的QImage类型的图片在Qlabel类中加载显示。改进后文件回放模块的软件流程见图3。

图3 文件回放功能软件流程图

4 结果测试

为了对比采用新方法对于文件回放速度的改善效果,拿出两种同型号手持设备,SD卡中存储的图片数量大小相同,在这里将4G卡存满图片后再让机器读取。分别采用两种文件回放策略,一种为回放方式读取原图(分辨率640×480),另一种为本文所述直接读取缩略图(分辨率160×120)。拍摄100张图片,观察切换进入文件回放模式的时间。经过测试,发现回放速度得到较大提升,如果文件回放时一页同时显示20张图片,那么显示时间减少1~2s。

5 总结

目前手持类视频图像设备正在大量普及,比如手机、摄像机等设备。随着内/外存存储容量的提升,存储的图像视频数量将会日益增多,作为提高文件回放速度的技术方法,该方法实现简单,不需要额外增加硬件资源,效果明显,具有工程应用价值。

[1] 许 刚,董士崇 .EXIF格式浅析及读取[J].电脑开发与应用,2008,18(03):39-41.

[2] 张晨鹂.基于DM365的音视频服务器的设计[D].武汉:武汉理工大学,2010.

猜你喜欢
缩略图原图预览
新品预览
多种方法开启PDF缩略图预览
更进一步用好图片缩略图文件
开启Office文档缩略图预览
完形:打乱的拼图
用好Windows 10文件缩略图
找一找
大家来找茬
11月在拍电视剧预览表
bauma China 2014展前预览