基于Android平台的图像处理系统的设计与实现
2015-09-27孙庆英翟海峰
孙庆英,翟海峰
(淮阴师范学院计算机科学与技术学院,淮安 223300)
基于Android平台的图像处理系统的设计与实现
孙庆英,翟海峰
(淮阴师范学院计算机科学与技术学院,淮安223300)
1 应用背景
在日常生活中智能手机凭借它可以随时随地获取和处理信息的优势,逐渐成为人们获取信息最主要的一种重要手段之一。根据采用的操作系统的不同,市场上智能手机可分为很多类,例如iOS、Windows Phone、Linux、Android等。由于Android操作系统具有良好的开放性和平台开源的便捷性等特点,采用Android操作系统的手机越来越受到人们的青睐。
再好的系统平台都需要有软件来支撑,如果把移动互联网比作新互联时代的骨骼,那么运行于移动平台之上的应用软件就好比血肉一样,是真正体现其价值的载体。移动应用软件作为直接与用户交互的窗口,已经逐渐引起了厂商和开发者的重视,开发出具有高认可度的移动应用软件,已经成为了移动平台占据传统市场的主要手段[1]。
本系统选取了在Android应用中有广泛应用前景的图片编辑作为开发对象,实现了随时随地在自己的移动设备上对已有的照片处理成所需规格的证件照,也可以利用移动设备自行拍摄后处理,处理后通过移动网络发送到目的地,操作方便、简单特别适合与应急情况下证件照的处理。
2 相关知识介绍
本系统基于Android平台进行开发,Android可以使用Java(SDK)、C(NDK)等作为编程语言,从接口到功能,都有层出不穷的变化,其中Activity等同于J2ME 的MIDlet,一个 Activity类 (class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。Service依赖于创建它的进程,但处于绑定状态下的Service(使用bindService()方法启动的),可以利用AIDL或者是广播机制(BroadcastReceiver)与其所绑定的Android组件进行跨进程通信,灵活方便[2]。
View等同于J2ME的Displayable,程序人员可以通过View类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用XML来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstract class),ViewGroup之内 还可 以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()方法来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册 View.OnClickListener。另外还有Image等同于J2ME的BitMap[3]。
本系统基于Android 2.2.3及以上操作系统,功能主要包括对照片的处理,其中对图片的处理操作需要用到以下几个包[4]:
(1)android.content.Intent
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
(2)android.content.res.Resources
Android Resources即Android资源文件。Android的资源文件,是由目录结构,XML格式的文件,和纯数据文件构成。Android的资源文件,覆盖面超级广,只要是和界面相关的,都可以用资源文件表示,例如:UI的样式、菜单、配置文件,各种描述性字符串、图片、音频视频文件、动画、颜色、尺寸、风格和样式等。
(3)android.graphics.Bitmap
publicabstractclassGraphicsextendsObject Graphics类是所有图形上下文的抽象基类,允许应用程序可以在组件(已经在各种设备上实现),以及闭屏图像上,进行绘制。
Graphics类是所有图形上下文的抽象基类,允许应用程序可以在组件(已经在各种设备上实现),以及闭屏图像上,进行绘制。Graphics对象封装了 Java支持的基本呈现操作所需的状态信息。
(4)android.net.Uri
不可改变的URI引用。 一个URI引用包括URI和片段,URI的下一个“#”的组成部分。
(5)android.os.Bundle
用于Android的Activity之间传递数据的类。
(6)android.view.View
这个类代表了用户界面组件的基本构建块。占据了屏幕上的一个矩形区域,负责图纸和事件处理。视图的基类部件,用来创建交互式UI组件(按钮、文本框等)。ViewGroup子类是基类的布局,这是无形的容器,持有其他视图(或其他ViewGroups)和定义它们的布局属性。
(7)android.widget.Button
代表一个按钮部件。可以按下按钮,或者点击,由用户来执行一个动作。
(8)android.widget.ImageView
显示一个任意的图像,如一个图标。ImageView类可以加载图像从不同来源(如资源或内容提供者),负责计算图像的测量,这样它就可以用于任何布局管理器,并提供各种显示选项,如缩放和着色。
3 体系架构
本软件基于移动设备,功能主要包括对已有照片的处理,包括图片大小设置、图片剪裁、图片旋转、图片加边框、图片背景设置、调整图片色度和饱和度、亮度和对比度、应用色阶和曲线等功能。同时利用移动设备实时照片拍摄功能融合对已有照片的处理能力,提供实时照片编辑功能。使用者不需要专门学习图像处理软件,即可完成日常生活需求的图片处理过程,广泛适用于移动设备的各级、各类用户,具有良好的易用性。具体的功能结构如图1所示。
图1 系统功能结构
该系统采用标准的MVC模式 (Model-View-Controller),View层利用XML文件配合Java文件进行界面的描述,Model层与Controller层皆由Java实现。在该系统中,View层用以显示程序界面,与用户进行交互,利用Controller层(多由Activity承担)将用户的操作传递给Model层进行图片的处理和存储,实现Model层与View层的分离。系统结构如图2所示。
图2 系统结构图
图3为系统的功能实现结构图,其中IB_Camera指相机拍摄功能,IB_Photo指相册提取照片功能,IB_Painting指整体的编辑图片功能,IB_Save指保存程序。
图3 功能实现结构图
4 详细设计
本系统主要包括证件照处理、调色处理、特效功能、图片旋转功能等4个模块,具体功能在wj.mi包中实现。Android SDK提供了Matrix以及Animation类,包含了一些对图片简单的操作。本系统主要基于Matrix类,进行了扩展,实现了一系列复杂的图像处理功能。下面对主要模块中包含的类、属性、方法做简单介绍。
该模块主要包含CutPicture类,用来实现剪裁操作。Android SDK提供了一个对图像进行裁剪的Intent:com. android.camera.action.CROP.通过putExtra()方法将所要设置的属性,以键值对的方式,绑定在该Intent对象中。通过StartActivityForResult()的方法,启动该Intent,并在剪裁操作处理完成之后,将数据返回给CutPicture。
图4中描述了该类包含的属性和方法。
图4 CutPicture类结构
该模块主要包含调色主面板类TiaoSeMain、调色功能实现类TiaoSe、亮度类LiangDu、调整亮度功能的实现类LiangDuChange,通过这几个类实现对图片色度、饱和度、亮度的调整。主要是通过颜色矩阵(ColorMatrix)来对图像的颜色进行处理以实现上述的效果如图5-8中描述了这几个类中包含的属性和方法。
图5 TiaoSeMain类结构
图6 TiaoSe类结构
图7 LiangDu类结构
该模块主要包含实现特效公用工具类的封装类TeXiaoUtil、特效具体实现类TeXiao,通过这两个类实现对图片的一些特效处理,例如底片效果,怀旧效果、浮雕效果、锐化效果、光照效果等。图9、10为这两个类的结构设计。
图8 LiangDuChange类结构
图9 TeXiaoUtil类结构
该模块包含旋转功能的具体实现类XuanZhuan,主要实现对图片的旋转功能,图11为该类的结构。
图10 TeXiao类结构
图11 XuanZhuan类结构
5 测试使用
本系统基于Android平台的客户端,通过安装API文件于Android手机上,便可运行。但系统版本需要在Android 2.3.3以上。系统的背景图片经过处理可以支持多分辨率手机。
图12 程序入口界面
运行程序后,程序的入口界面如图12所示,用户可以用两种方式:从相册中选取图片,或者直接现拍一张照片,来选择需要编辑的图片。在选择完图片之后,会进入图片编辑界面,如图13所示。
图13 图片编辑界面
点击 “Save”按钮便会保存剪裁的图片,点击“Discard”便会取消裁剪。
图14 剪裁功能
色度:图像通常被划分为多个色调 (如绿色、红色),其中包含一个主色调。色调调整就是指将图像颜色在各种颜色之间进行调整,用户可分别调整各色调。也就是说,如果想要改变图片的整体色调时可以调整该选项。值越小越接近白色,值越大越接近黑色[5]。
例如,在白炽灯下拍摄的照片会偏红,将色度的值调小,会使照片变的更为真实。
饱和度:是指图像颜色的彩度或鲜艳程度(如更红或更绿),将一个图像的饱和度降至-100时,图像即变为灰度图。如果觉得拍摄的照片不够鲜艳,或者是要达到一个鲜艳的效果。可以调高该值[5]。
亮度:是指图像中明暗程度的平衡,它决定了明暗色调的强度。拍摄的时候如果光线较暗,会使图片色调偏暗。通过调高该值得以使图片更清楚。拍摄的时候如果过度曝光,通过调低该值亦可达到使图片更加清楚的效果[5]。
默认值都为当前照片值的100%。调整后可改变图片的饱和度、色度和亮度效果图。如果你感觉照片的颜色不够鲜艳,可以调高饱和度,反之调低。
图15 调色功能
在日常拍照中,我们经常因为拿反相机或者手机,使拍出的相片颠倒,要转移到电脑上一张一张调整过来显得很麻烦。通过该软件可以快速地帮助用户调整相片的方向,将颠倒的照片纠正过来。
图16 翻转功能
图17 水平翻转效果
如果想让自己的照片富有个性,变得与众不同而有趣时,特效处理往往是一个不错的选择。本软件省去了复杂的操作过程,将特效处理变成一键直达式的傻瓜式处理方式。
6 结语
目前基于移动设备的开发是信息技术领域的一个热点,尤其是针对Android平台的开发近两年来受到开发者的广泛重视,从目前来看,Android和其他移动设备平台的开发环境不存在过多的技术难题,针对开发者来说,主要是熟悉环境的步骤。由于开发平台开源的特点,因此,可能有众多开发者都在进行功能类似的研究。
这种情况之下,竞争主要体现在两个方面,一是时间上,看类似应用的推出时间;二是软件本身,主要看该软件的功能的完整性和易用性,尤其是易用性。因为这类软件产品针对的用户范围更广,水平参差不齐,所以相对来说易用性是最重要的衡量指标。
利用本系统可以随时随地在移动设备上将已有的照片处理成所需规格的证件照(例如学生证照片、各种考试报名照片、二代身份证照片等),也可以利用移动设备自行拍摄,例如可以选择分辨率,可以选择拍摄背景等,拍好后可以对照片再做相关的处理,用户不再需要专门学习图像处理软件,操作起来非常的方便、简单,应用面非常广。
[1]Rachel Hinman熊子川,李满海.移动互联:用户体验设计指南[M].清华大学出版社,2013,7.
[2]姚尚朗,靳岩等.Android开发入门与实战(第2版)[M].人民邮电出版社,2013,6.
[3]曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011,27(9).
[4]明日科技(中国)有限公司.Android从入门到精通[M].清华大学出版社,2012,8.
[5]John C.Russ.数字图像处理(第6版)[M].余翔宇等译.电子工业出版社,2014,8.
Android Platform;Image Processing;Mobile Development
Design and Implementation of Image Processing System Based on Android
SUN Qing-ying,ZAI Hai-feng
(Department of Computer Science and Technology,Huaiyin Normal University,Huaian 223300)
1007-1423(2015)28-0045-07
10.3969/j.issn.1007-1423.2015.28.012
孙庆英(1982-),女,江苏洪泽人,研究生,讲师,研究方向为信息安全、移动开发
2015-09-08
2015-09-25
选取在Android应用中有广泛应用前景的图片编辑作为开发对象,实现随时随地在移动设备上对照片进行各种个性化的处理。对系统开发背景、软件的体系架构、详细设计、软件的测试、应用市场等进行介绍。
Android平台;图像处理;移动开发
淮安市应用研究与科技攻关(工业)计划项目(No.HAG2014025)
翟海峰(1993-),男,江苏如东人,本科,工程师,研究方向为图像处理、移动开发
Selects the image processing as the development object,which has a wide range of application prospects in Android application,to realize a variety of personalized image processing on photos using mobile devices at any time.Introduces the system development background,software architecture,detailed design,software testing,application market.