基于Linux电子相册的Word文档下载推荐.docx
- 文档编号:18241040
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:16
- 大小:1.65MB
基于Linux电子相册的Word文档下载推荐.docx
《基于Linux电子相册的Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于Linux电子相册的Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
1.开发背景
Linux就是一套操作系统,Linux的前身是Unix,Linux提供了一个完整操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Unix良好的传统而来的,所以相当稳定并且功能强大,可移植性非常好。
本设计采用的是嵌入式Linux系统。
首先,Linux是开放源代码,是遍布全球的众多Linux爱好者和Linux开发者的强大技术支持;
其次,Linux的内核小、效率高,性能稳定,裁剪性很好,开发和使用都很容易,移植性很强,即用Linux环境开发的产品,二次开发方便。
图1.1LinuxLogo
Linux是一套免费试用和自由传播的类Unix操作系统,它主要用于基于Intelx86系列CPU的计算机上。
这个系统是由世界各地的成千上万的程序员设计和实现的。
Linux以它的高效性和灵活性著称。
它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。
2.开发目的
近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。
嵌入式系统产品的研制和应用已经成为我国信息化带动工业化,工业化促进信息化发展的新的国民经济增长点。
随着消费家电的智能化,嵌入式更显重要。
据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。
基于嵌入式Linux的电子相册比一般的电子相册更加的具有优越性和实用性。
所以,我们有理由相信基于嵌入式Linux的电子相册必将成为未来电子相册的主流。
2需求分析
需求分析在软件开发中是一项非常重要的工作。
在需求分析中,我们需要确定客户的需要。
并且根据客户的需求,以及我们的实际情况,构思和制定出一个完善的设计方案,本章较为系统和详细的阐述了该电子相册全面而合理的需求。
2.1概述
随着数码相机逐步走进寻常百姓家中,人们对电子相册的需求不断增加。
电子相册提供给用户的不仅仅是一个存储空间,更多的是拥有了与他人分享和交流的机会,这是一个新生事物但却大有前景。
现在主流的电子相册应用软件,其体积普遍庞大,占用较多的内存,对硬件的要求高,因此开发一个运行速度快,占用空间小,对硬件要求较低的功能实用的基于嵌入式Linux电子相册的应用软件非常有意义。
2.2性能需求
1.响应速度:
不论是什么样的软件,在设计和实现的时候,必须要考虑软件的响应速度,所以,一款优秀的软件必须将响应速度设计在用户可忍耐的范围内。
该软件内存占用率小
2.流畅性:
用户在使用软件的时候,系统应在用户忍耐时间范围内的作出响应,如果不能及时的回馈用户的反应,即使功能再丰富的软件,也注定不会受用户的认可。
3.舒适度:
在软件的设计的时候,要将各组件的间距、顺序设计的符合大众习惯。
使用一些提示的文字或图片等提示用户操作。
2.3功能需求
1.基本功能
(1).手动浏览
可以实现查看上一张、下一张,实现图片的放大与缩小。
(2).全屏播放
可以实现图片的暂停和播放,每张图片的展示都有不同的特效。
(3).音乐播放
可以实现音乐的上一曲、下一曲播放,实现音量的调节。
(4).返回主界面//如上
系统退出到主界面。
图2-1系统主界面
2.4系统界面
设计一款软件界面的时候,非常有必要考虑各个组件之间合理的布局,我们在给定大小的界面中完成各个组件的布局时,既不能让各组件太“拥挤”,也不能让各组件之间距离太远,孤零零的,组件之间的间距一定要适中,让人看着舒服。
而且各组件在顺序上的安排要满足用户的习惯性的操作,尽量减少用户误操作的可能。
在一些组件上要使用图片按钮,提示用户各个组件的作用和操作方法,以及在整个界面的颜色的搭配上要做到舒适,既不要让用户感到“刺眼”,也不要让用户感觉到界面太“冷淡”,界面的颜色一定要选择以暖色为主调。
3项目技术及开发环境的搭建
3.1搭建开发环境
1.准备所需软件包:
Redhatlinux9.0,qt-X11-opensource-src-4.5.3
2.软件的安装:
(1)安装虚拟机Vmware虚拟机。
(2)在vmvare虚拟机中安装linuxRedhat9.0操作系统,并配置网络,内存,以及用户等等。
(3)安装Qt开发包。
1.将qt-X11-opensource-src-4.5.3解压到/root/usr/local/trolltech目录下
2.设置环境变量:
3.在终端中进入解压的目录下
4.在该目录下输入./configure检查安装包
5、输入gmake编译程序;
6、输入gmakeinstall进行程序的安装;
7、安装完成,输入qmake-v可以查看QT版本;
3.QT技术介绍
QT是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能,Qt很容易扩展,并且允许真正地组件编程,基本上,Qt同XWindow上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西。
(1)优良的跨平台特性。
Qt几乎支持现在流行的所有操作系统
(2)面向对象。
Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。
Qt运用信号和槽机制来对消息进行处理,提高了各进程之间协同处理的效率。
(3)丰富的API。
Qt包括多达250个以上的C++类。
甚至还包括正则表达式的处理功能。
(4)支持2D/3D图形渲染。
(5)提供了多种类型的文档。
例如QTAssistant,它是一个完全可自定义,重新分配的帮助文档,他可与基于Qt的应用程序运行,使用Qt助手,开发小组同样能够很大程度上加快文档的处理过程[9]。
(6)XML的支持。
4.采用Frambuffer
5.采用Libjpeg库
libjpeg是一个被广泛使用的JPEG压缩/解压缩函数库(至少在Unix类系统下是广泛使用的),它能够读写JFIF格式的JPEG图像文件,通常这类文件是以.jpg或者.jpeg为后缀名的。
通过libjpeg库,应用程序可以每次从JPEG压缩图像中读取一个或多个扫描线(scanline,所谓扫描线,是指由一行像素点构成的一条图像线条),而诸如颜色空间转换、降采样/增采样、颜色量化之类的工作则都由libjpeg去完成了。
6.采用Libmad库
libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播
放器如mplayer、xmms等都是使用这个开源库进行解码的;
7.采用freetype字体库
它是开源免费、高质量可移植的字体引擎,它提供统一的接口,来访问多种字体格式,使用的是高度模块化的程序库,可以灵活的进行裁剪。
它是采用C语言实现的。
4软件的设计与实现
4.1概要设计
通过第二章的需求分析和第三章提到的技术的了解。
对于电子相册的各种功能实现已经明了。
接下来的概要设计将详细概述本软件的整体流程,规划软件怎样开发的总领提纲。
4.1.1设计思想
本电子相册我们采用模块化编程,共5大模块:
主控制、音乐播放、相册浏览、鼠标控制、键盘控制。
在总体框架上运用多线程、多进程、信号量机制等。
4.1.2设计原则
合理化分配内存,做到安全释放,避免内存泄漏。
尽量减小内存的占用。
4.1.3模块概要设计
如图(4-1)是系统功能的框架图。
图4-1系统框架图
鼠标点击,选择进入手动浏览,选择所要浏览的图片,通过鼠标和键盘,实现手动浏览的以下功能。
图4-2手动浏览框架图
鼠标点击。
选择进入全屏播放,通过鼠标和键盘,实现全屏播放的以下功能。
图4-3全屏播放框架图
鼠标点击,选择进入音乐播放,通过鼠标和键盘,实现音乐播放的以下功能。
图4-3音乐播放框架图
4.1.4电子相册的操作流程
先在init5模式下输入命令sourceenv.sh(设置一些环境变量)
再运行servicegpmstop(禁用系统鼠标)
然后运行./main
1.进入欢迎界面
2.单击鼠标右键进入主界面
3.鼠标选择进入相应的功能模块
3.1手动浏览功能
在手动浏览中,用户可以通过鼠标和键盘控制,查看上一张,下一张图片,可以实现图片的放缩。
同时可以播放音乐。
3.2全屏播放
在全屏播放中,每张图片的播放都有其各自的特效,可以实现图片的暂停和播放。
3.3音乐播放
在音乐播放中,可以实现音乐的上一曲,下一曲播放,音量的调节。
4.系统退出
4.2详细设计
我们的相册主要包括:
欢迎界面、主界面、相片浏览、音乐播放、鼠标控制、键盘控制,系统退出。
每个模块的功能和具体的实现如下:
4.2.1欢迎界面的设计
进入应用程序最先执行的模块。
在主函数即main函数中调用initscreen()函数。
该函数首先打开Linux下的/dev/fb0以启动FrameBuffer的设备文件,通过使用framebuffer与jpeg库的使用在linux的窗口下画图片,通过jpeg库将以后缀为.jpeg的图片转换为二进制数,然后在屏幕下每个相素点画出相应的点。
进而使欢迎界面的图片显示在我们的窗口上。
接着通过ioctl()函数获取屏幕信息,并调整我们的图片大小以适应屏幕大小。
4.2.2主页面的设计
在欢迎界面下,单击鼠标左键,
有四个按钮,分别是:
手动浏览,全屏浏览,音乐播放,主控制。
通过鼠标点击按钮进入相应的模块。
4.2.3相片览模块的设计
浏览模块又分为手动浏览和全屏浏览。
对于图片的浏览,首先是定义一个屏幕的结构体,然后通过读设备文件的信息将其赋值,将屏幕的内存地址映射到结构体的u32_tmem成员上,画点时在内存映射相对应的位置上画点。
在销毁屏幕信息时解除对应地址的映射。
画点函数在每张相片的显示中至关重要。
我们的相片都是以.jpeg为后缀的,此时就需要jpeg库来进行操作。
首先是我们需要配置库,然后安装。
依次需要的命令是./configure、make、makeinstall。
我们通过运用库函数中的一些函数来来对图片进行解码、缩放、相素转换、显示图片。
我们的界面就是通过改变画图的位置来进行组合,形成我们所看到的界面。
播放时的效果就是通过改变画图的方式。
在手动浏览功能中,我们运用管道机制来实现鼠标和主进程之间的通信,从而控制图片的上一张下一张播放。
在主函数中调用pipe()函数创建管道,接着调用fork()函数创建子进程,关闭父进程的写端和子进程的读端,这样就创建了从子进程到父进程的IPC通道。
若鼠标点击下一张按钮,就向管道中写入要求执行播放下一张的命令,主进程读取命令后,执行播放下一张图片的函数。
在全屏浏览中,我们用C语言编写了不同的图片的展示方式。
每张图片都设有各自的特效。
4.2.4音乐播放的设计
主要有播放功能,上一曲,下一曲,暂停播放,继续播放,音量的调节。
我们通过操作音乐库,先是配置音乐库,然后通过改变音乐库中的播放函数来进行音乐播放的相应操作,音乐播放主要是通过全局变量的设定来操作(播放、下一首、当前播放的序号、停止播放)我们的全局变是是通过读鼠标在界面中所单击的位置来置位的。
4.2.5鼠标控制的设计
首先我们要画一个鼠标,并且记录鼠标的初始位置,点击位置,以及相应键的响应。
先定义了一个鼠标状态结构体
typedefstruct
{
u8_tbtn;
u8_tx;
u8_ty;
}mouse_t;
定义一个数组放的是颜色的宏定义,通过使用framebuffer,来画点,画出鼠标的形状,在每次使用鼠标前,先把鼠标对应位置的数据保存起来,用来等鼠标移开时恢复其原来的数据。
还有解决鼠标的边界问题。
当鼠标移动到超出屏幕时,令他停在屏幕边界。
最后把现在鼠标的状态通过管道写出去,然后其他子进程通过读出鼠标的状态判断自己相应的操作。
在整个软件执行阶段,鼠标的工作量是最大的!
4.2.6键盘控制的设计
通过读取标准输入判定并做出相应的操作首先是注册一个信号,通过标准输入来读,然后通过getchar()函数来获取键盘的输入。
判断鼠标的输入是否是一个’q’,如果是’q’则发送一个SIGQUIT来终止程序的进程。
不是,则把键盘输入的值通过进程传递给音乐进程,音乐进程通过判断键盘输入的值来实现上一首,下一首,暂停,播放功能。
4.2.7主控制的设计
一个父进程和四个子进程,通过管道和信号量机制来实现进程之间的通信。
4.3数据结构
1.双向链表
首先建立一个链表的结构体,然后通过后值插入法,在链表的结点中填加数据,并且通过结构体中的数据ID号来寻找相对应的数据。
typedefstructnode{
chardata[255];
structnode*prior,*next;
}ListNode;
typedefListNode*LinkList;
typedefstruct{
LinkListhead;
LinkListrail;
}List;
2.文件操作
通过打开一个文件夹,读出文件夹下所有的文件,并把所有的文件路径名加入到双向链表的数据中,然后通过传递链表的头结点,每个函数来做相应的操作。
4.4编码的实现
本文档关键性核心代码参见附录。
5软件测试
软件的测试在开发的过程是一个不可缺少的关键性环节,要开发一款性能优良的软件,必须要进过严格的软件测试,只有通过严格测试的软件才是一款优秀的软件。
通过软件测试可以找出其中潜在的bug、逻辑上的错误等非人为潜在危险,并及时的对软件进行修改,减少在用户使用过程中不必要的麻烦。
5.1性能测试
表5.1软件测试
NO.
场景
测试步骤
预期结果
测试结果
欢迎界面
1
欢迎
调试运行开始
进入欢迎界面
符合
主界面
2
单击鼠标左键
进入主界面
手动浏览
3
选择浏览图片
显示所选图片
4
单击上一张按钮
显示上一张图片
5
单击下一张按钮
显示下一张图片
6
单击放大按钮
实现图片的放大
7
单击缩小按钮
实现图片的缩小
8
单击退出按钮
退回到主界面
全屏浏览
9
选择全屏浏览按钮
进入全屏浏览模式
10
进入暂停模式
11
恢复播放模式
12
音乐播放
13
单击播放按钮
进入音乐播放
14
点击键盘左键
播放上一曲音乐
15
点击键盘右键
播放下一曲音乐
16
单击暂停按钮
音乐暂停
17
单击音量增加按钮
音量增加
18
单击音量减小按钮
音量减小
退出系统
19
单击退出系统按钮
5.2硬件上测试
将软件安装到真实的Arm物理设备上进行测试。
测试的步骤相同,测试的结果符合开发要求。
6设计总结
通过完成此项目的开发,学习和巩固了所学的编程知识,同时也学习了一些诸如Qt界面编程的新技术,开拓了自己的视野以及知识面,增强了自己动手解决问题的能力,具体做出如下总结:
本系统是基于linux操作系统下进行的,充分应用了QT界面编程技术,并且应用了C++面向对象的思想,大量运用类(class),完成了对界面所有组件的编写,运用信号(signal),槽函数(slot),把各按钮与功能实现函数相联系,完成了诸如界面切换,音乐播放等功能。
系统基本上实现了所预期的功能。
但是由于知识的局限以及个人经验不足等原因,有的功能还不是很理想,诸如音乐播放不流畅等问题。
综合这些过程,正如一句老话“学无止境”,今后还需要不断的完善和充实自己。
参考文献:
[1]丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展期刊,2006,16
(1):
158-161.
[2]ChaoWang,WeiDuan,JianzhangMa,ChenhuiWang.TheresearchofAndroidSystemarchitectureandapplicationprogramming[J].ComputerScienceandNetworkTechnology(ICCSNT),2011InternationalConference,Page(s):
785-790.
[3]柴若楠等.音视频同步技术综述[J].计算机系统应用,2011,20(11):
223~226.
[4]施佳子.iPhone平台移动流媒体播放器的实现与优化[D].武汉:
华中科技大学,2009,05.
[5].Android[OL].http:
//zh.wikipedia.org/wiki/Android.
[6]柯元旦.Android内核剖析[M].北京:
电子工业出版社,2011.
[7]杨丰盛.Android技术内幕[M].北京:
机械工业出版社,2011.
[8]简洪波.基于Symbian平台的移动流媒体客户端的研究和实现[D].武汉:
华中科技大学,2007,01.
[9]王世江.GoogleAndroid开发入门指南(第2版)[M].北京:
人民邮电出版社,2009.
[10]王冠宇,关永,赵冬生.JAVA在SQLite嵌入式数据库中的应用[J].微计算机信息,2006,22
(1):
94~95.
[11]陈佳科,刘冀伟,洪英杰,董晓宇.基于无线网络环境下的移动流媒体系统的实现[J].微计算机信息,2005,21
(1):
109~110.
[12]WenhaoWang,MingyuGao.DesignofembeddedmediaplayerbasedonS3C2440and
SDL_FFMPEG[J].ElectricalandControlEngineering(ICECE),2011International
Conference.2011,Page(s):
2979~2982.
TheElectronicPhotoAlbumBasedonLinuxSystem
Abstract:
Withtheconstantprogressofscienceandtechnology,ourstudyandlifearechangingwiththechanging.Photoalbumhascan'
tsatisfypeople'
sneeds,electronicphotoalbumgraduallybecamethemainstreamoftoday'
sphotoalbum.ThroughtheanalysisoftheelectronicphotoalbumwiththeirknowledgeinthecombinationofbasedonLinuxoperatingsystem,thedesignmadetheelectronicphotoalbum.ThissystemisgivenprioritytowithQTknowledge,combinedwiththeClanguageandC++object-orientedthought,usingthesignalsandslotsmechanismintheQT,eventuallycompletedtheinterfacebetweencallandcohesion.Themainfunctionsarewelcomescreen,photobrowsing,musicplayback,mouse,keyboardoperation.Photobrowsingdegreestofeatures:
onapicture,thenext,amplification,specialeffects,theexitfunction.Musicplayback:
play,pause,asong,thenextsong,thevolumeincreases,thevolumedecreases.Themousecontrol:
drawthemouse,movethemouse,clickandreturnthemousecoordinates.Withtheprogressofkeyboard:
throughthereadoutdevicefilesandotherbasicfunctions.
KeyWords:
Linux;
Electronicphotoalbum;
CLanguage;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 电子相册