一個簡單的網絡應用——面部拍照軟件

   這是在ETI的第3個工作——給一個政府衛生署的公衆殮房做一個給屍體面部拍照的軟件,用於家屬辨認。

需求:對屍體的面部拍照,並保存在指定的位置。

分析:設計一個直觀簡捷的操作頁面,分爲:攝像頭顯示畫面,攝像頭角度控制,拍照按鈕三個方面。

            由於選擇使用的攝像頭爲AXISP5510型號,自帶可訪問的服務器,提供編程操作的藉口,所以可直接使用API抓取攝像的圖像和對攝像頭進行控制。於是,採用簡單Java的Applet+Html 的結構。Applet;運行於本機的JAVA環境JRE中,用於拍照時讀取拍照的數據,存入指定的位置。Html:顯示軟件的操作界面。

過程:1·搭建Tomcat環境,創建一個webapps的應用,對web.xml配置,放入.html文件和jar包,及applet的java編譯的class文件。

            2 爲了使html中的Applet具有寫文件的權限和與攝像頭的IP相連接等權限,雖然從安全的角度上講,軟件帶有一定的安全漏洞,但考慮到該軟件是用於局域網內部,可以接受。

           3  完成後在office進行簡單的測試,提出了一個需求變動,就是圖像文件存儲位置的變動,html沒法提供提供能,於是使用APPlet+JSP結構。測試時,出現問題主要有兩個:1 存儲照片時,寫入的總是一個緩存中得圖像,不是實時拍照的圖像;2 在瀏覽器中傳入的中文,在頁面顯示爲亂碼。

            4 解決問題1:在本機的java環境中,取消keep temporay files on my computer .

               解決問題2:設置Tomcat的server.xml將8080端口的ERL的編碼設置爲“ERIEncoding=“UTF-8””;在瀏覽器傳入name的參數時,我們傳入的是中文的UTF-8的編碼。

此時,軟件測試完成,將在實地進行安裝測試。實際軟件運行的環境相對於office有些不同:JRE1.5+JBoss應用服務器。之後按照客戶的要求,修改了某些軟件的顯示頁面,並增加了照片在存儲時提示存儲過程的模塊。

但是在用戶試用階段,又一個問題出現了,在實際應用的時候用的時候,照片存儲在網絡存儲設備上,所以用軟件存儲照片比直接用攝像頭自帶的程序存儲時間對比:

Network drive P for  Capture Software: 5s
Network drive P for own drive : 15-17s

Local drive C for old Capture Software: 1s
Local drive C for new drive: 11-13s
用戶不能接受這樣的時間差,於是需要對軟件進行該進。

仔細檢查,問題的原因在於若是用服務器的localhost:8080訪問,會出現上訴問題,若是直接用127.0.0.1/<服務器IP>的話,存儲時間與自帶程序運行時間相差不大。反覆思量,再請教於同事,發現這是一個Java自帶的Bug引起的問題,若將JDK升級到30版本,問題不存在了。我們在用Applet存儲照片的時候,Applet與服務器連接的時候,由於使用的是域名,java在連接了服務器ip地址後,不知道去哪裏找到camera這個確定的地址,於是就很慢。於是,在本機的hosts中,增加camera的ip。 “ 

OK,完成!

經過接下來的兩週試用,軟件運行良好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章