孫慶英,翟海峰
(淮陰師范學院計算機科學與技術學院,淮安 223300)
基于Android平臺的圖像處理系統的設計與實現
孫慶英,翟海峰
(淮陰師范學院計算機科學與技術學院,淮安223300)
在日常生活中智能手機憑借它可以隨時隨地獲取和處理信息的優勢,逐漸成為人們獲取信息最主要的一種重要手段之一。根據采用的操作系統的不同,市場上智能手機可分為很多類,例如iOS、Windows Phone、Linux、Android等。由于Android操作系統具有良好的開放性和平臺開源的便捷性等特點,采用Android操作系統的手機越來越受到人們的青睞。
再好的系統平臺都需要有軟件來支撐,如果把移動互聯網比作新互聯時代的骨骼,那么運行于移動平臺之上的應用軟件就好比血肉一樣,是真正體現其價值的載體。移動應用軟件作為直接與用戶交互的窗口,已經逐漸引起了廠商和開發者的重視,開發出具有高認可度的移動應用軟件,已經成為了移動平臺占據傳統市場的主要手段[1]。
本系統選取了在Android應用中有廣泛應用前景的圖片編輯作為開發對象,實現了隨時隨地在自己的移動設備上對已有的照片處理成所需規格的證件照,也可以利用移動設備自行拍攝后處理,處理后通過移動網絡發送到目的地,操作方便、簡單特別適合與應急情況下證件照的處理。

本系統基于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的下一個“?!钡慕M成部分。
(5)android.os.Bundle
用于Android的Activity之間傳遞數據的類。
(6)android.view.View
這個類代表了用戶界面組件的基本構建塊。占據了屏幕上的一個矩形區域,負責圖紙和事件處理。視圖的基類部件,用來創建交互式UI組件(按鈕、文本框等)。ViewGroup子類是基類的布局,這是無形的容器,持有其他視圖(或其他ViewGroups)和定義它們的布局屬性。
(7)android.widget.Button
代表一個按鈕部件。可以按下按鈕,或者點擊,由用戶來執行一個動作。
(8)android.widget.ImageView
顯示一個任意的圖像,如一個圖標。ImageView類可以加載圖像從不同來源(如資源或內容提供者),負責計算圖像的測量,這樣它就可以用于任何布局管理器,并提供各種顯示選項,如縮放和著色。

本軟件基于移動設備,功能主要包括對已有照片的處理,包括圖片大小設置、圖片剪裁、圖片旋轉、圖片加邊框、圖片背景設置、調整圖片色度和飽和度、亮度和對比度、應用色階和曲線等功能。同時利用移動設備實時照片拍攝功能融合對已有照片的處理能力,提供實時照片編輯功能。使用者不需要專門學習圖像處理軟件,即可完成日常生活需求的圖片處理過程,廣泛適用于移動設備的各級、各類用戶,具有良好的易用性。具體的功能結構如圖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個模塊,具體功能在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類結構
本系統基于Android平臺的客戶端,通過安裝API文件于Android手機上,便可運行。但系統版本需要在Android 2.3.3以上。系統的背景圖片經過處理可以支持多分辨率手機。


圖12 程序入口界面
運行程序后,程序的入口界面如圖12所示,用戶可以用兩種方式:從相冊中選取圖片,或者直接現拍一張照片,來選擇需要編輯的圖片。在選擇完圖片之后,會進入圖片編輯界面,如圖13所示。

圖13 圖片編輯界面

點擊 “Save”按鈕便會保存剪裁的圖片,點擊“Discard”便會取消裁剪。

圖14 剪裁功能

色度:圖像通常被劃分為多個色調 (如綠色、紅色),其中包含一個主色調。色調調整就是指將圖像顏色在各種顏色之間進行調整,用戶可分別調整各色調。也就是說,如果想要改變圖片的整體色調時可以調整該選項。值越小越接近白色,值越大越接近黑色[5]。
例如,在白熾燈下拍攝的照片會偏紅,將色度的值調小,會使照片變的更為真實。
飽和度:是指圖像顏色的彩度或鮮艷程度(如更紅或更綠),將一個圖像的飽和度降至-100時,圖像即變為灰度圖。如果覺得拍攝的照片不夠鮮艷,或者是要達到一個鮮艷的效果??梢哉{高該值[5]。
亮度:是指圖像中明暗程度的平衡,它決定了明暗色調的強度。拍攝的時候如果光線較暗,會使圖片色調偏暗。通過調高該值得以使圖片更清楚。拍攝的時候如果過度曝光,通過調低該值亦可達到使圖片更加清楚的效果[5]。
默認值都為當前照片值的100%。調整后可改變圖片的飽和度、色度和亮度效果圖。如果你感覺照片的顏色不夠鮮艷,可以調高飽和度,反之調低。

圖15 調色功能

在日常拍照中,我們經常因為拿反相機或者手機,使拍出的相片顛倒,要轉移到電腦上一張一張調整過來顯得很麻煩。通過該軟件可以快速地幫助用戶調整相片的方向,將顛倒的照片糾正過來。

圖16 翻轉功能

圖17 水平翻轉效果

如果想讓自己的照片富有個性,變得與眾不同而有趣時,特效處理往往是一個不錯的選擇。本軟件省去了復雜的操作過程,將特效處理變成一鍵直達式的傻瓜式處理方式。
目前基于移動設備的開發是信息技術領域的一個熱點,尤其是針對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.