999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

照片查詢系統設計與實現

2018-07-03 01:30:00薄建杰扈桂讓
山西建筑 2018年14期
關鍵詞:數據庫功能信息

薄建杰 扈桂讓

(山西省地震局,山西 太原 030021)

0 引言

隨著當今信息社會各領域的技術的迅猛發展,信息爆炸方式的迅猛增長,種類不斷的增加,除了文本、數字、圖片外,數碼照片作為真相記錄、應征已成為不可或缺的重要信息形式之一。數碼相機、手機照相功能的便捷使數碼相片趨于海量數據成為現實,有時一次重大地震現場科考照片匯集就多達上萬張,甚至更多,要從眾多照片中找到所需要的照片較為困難,人工一個一個的進行查找,這種方式效率十分低下。快速準確的數碼相片查詢系統,已成為工作信息提取的必要元素,是信息發布應用的前提,也是當前亟待解決的問題[1-6]。

現代數碼相機拍攝的照片就是一種EXIF信息形式,我們通常把英文Exchangeable Image File簡稱為EXIF,手機拍攝功能更是提供了定位、編輯注釋等功能,有了這些信息,建立數據庫存放此類信息及對應照片存放地址,從而確立唯一的檢索關系。通過設計一個查詢界面即可使用戶依據查詢條件快速找到所需要的內容了[7,8]。

1 系統功能需求分析

本系統主要功能需求是:1)提取及解讀EXIF信息中服務于工作的常用照片信息參數;2)建立EXIF信息數據庫,存儲EXIF信息及對應照片地址;3)建立查詢系統。通過一個查詢界面,依據查詢條件,查詢(讀取)指定文件下的所有照片,找到照片后,顯示其EXIF信息并在指定區域顯示所找到的照片。

2 系統設計

本系統設計為B/S三層式結構,數據層為提取出來的EXIF信息庫,以SQL Server開發,業務邏輯層為圖片處理類,表示層為照片信息查詢端。其中邏輯層圖片處理類和表示層頁面查詢端均采用java語言開發,查詢端采用C#語言開發,系統運行環境為IIS6.0。

創建及開發數據庫:我們要創建exifform表,這個可以依據Access數據庫db.mdb。提取出的EXIF信息可以保存成文本文件存放于對應目錄中,也可以采用數據庫jdbe—odbc橋實現數據的連接查找。

數據庫連接采用靜態方法加載驅動程序,如使用Java Class類中的forName:連接數據庫使用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")l,需要強調的是要用Connec—tion(java.Sql下屬的)類聲明一個對象,再用靜態方法getConnection創建這個連接,創建前需要類DriverManager調用;然后通過Statement對象并調用Statement來傳送并執行。

在做查詢界面前,依據EXIF信息字段及數據屬性建立數據庫及表結構,選擇出災情調查、上報及科考時常用的要查詢字段,如時間、位置(即全球定位系統GPS)、圖像工具、作者等,然后實現從數據庫查詢并返回顯示的功能。數據庫主要字段設置見表1。

表1 數據庫主要字段設置

3 EXIF信息處理模塊功能的實現

本系統利用數碼照片提供的EXIF信息為基礎,對照片信息逐個讀取并解析。

EXIF實際上是一種圖象文件格式,類似JPEG圖片存儲格式。EXIF格式優勢就在JPEG格式頭部插入了數碼照片的信息,通常以字符串“0xFFD8”作為EXIF標識的JPEG文件頭,而字符串“0xFFD9”作為文件尾。把拍攝時的快門、焦距、光圈、ISO、白平衡、日期時間等各種拍攝條件以及相機型號、品牌、拍攝時錄制的聲音、色彩編碼以及縮略圖、全球定位系統(GPS)等在文件頭中以一系列“0xFF??”格式的字符串表示。可以看出,按照EXIF2.1標準對這些標識符的定義,可以利用任何可以查看JPEG文件的看圖軟件瀏覽EXIF格式的照片,檢索出它們的具體含義。

我們基于java處理EXIF信息,通過類庫Metadata Extractor來直接讀取照片(圖片)元數據。

也可以采用抽象類,例如圖片處理的基類ImageRender(歸屬于SimpleImage),它通過一個抽象方法render()定義一個抽象類,同時可以引用ImageRender類。ReadRender是所有渲染操作的第一步,它不是一個裝飾者,而是可以理解成一個組件,但是其他的子類WriterRender(輸出),ScaleRender(縮略處理)均是裝飾者。調用最外層的render()方法是通過WriteRender包裹ScaleRender,然后ScaleRender包裹ReadRender,ReadRender需要引入一個輸入流,這樣處理圖像,層層進入。我們可以看到ReadRender首先讀取圖片數據,通過ScaleRender執行圖片縮略,WriteReneder把處理好的圖片數據寫入輸出流中,完成圖片信息操作。

對應信息如表2所示。

表2 EXIF信息對應表

EXIF信息提取及保存模塊實現:解析EXIF信息,一般用到的Java包是metadata-extractor,這個jar提供了支持獲取擴展信息的功能。將照片上傳到WEB服務器指定的文件夾下,提取EXIF信息代碼主要為:

public class Test1 {

public static void main(String[] args){

File tufilename = new File("F:/圖片定位/DCIM/P20130116_125539.jpg");

Metadata metadata;

try {

metadata = JpegMetadataReader.readMetadata(tufilename);

Directory exif = metadata.getDirectory(ExifDirectory.class);

Iterator biaozhi1 = exif.getTagIterator();

while (biaozhi1.hasNext()) {

Tag tag = (Tag)biaozhi1.next();

System.out.println(tag);

}

Directory jpeg = metadata.getDirectory(JpegDirectory.class);

Iterator biaozhi2 = jpeg.getTagIterator();

while (biaozhi2.hasNext()) {

Tag tag = (Tag)biaozhi2.next();

System.out.println(tag);

}

Directory gps = metadata.getDirectory(GpsDirectory.class);

Iterator biaozhi3 = gps.getTagIterator();

while (biaozhi3.hasNext()) {

Tag tag = (Tag)biaozhi3.next();

System.out.println(tag);

}

} catch (JpegProcessingException e) {

e.printStackTrace();

}

}

}

EXIF信息入庫代碼如下:

public class DbUtil {

private static Connection conn;

private static PreparedStatement ps;

private static ResultSet rs;

private static String odbc_url= "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=d:workdb.mdb";

private static String odbc_url= "jdbc:odbc:my_oracle_ODBC";

static{

try {

Map map = new HashMap();

odbc_driver = map.get("odbc_driver");

odbc_url = map.get("odbc_url");

Class.forName(odbc_driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

}

定義一個Servlet監聽器,并在Web.xml中配置,這樣在WEB服務器啟動時,會自動啟動EXIF信息導入任務。

在Web.xml中的配置

com.wincpt.exif.TaskInit

Servlet監聽器的代碼如下:

public class TaskInit implements ServletContextListener {

private Timer importTimer;

private long pireod = 24 * 60 * 60 * 1000;

public TaskInit() {

importTimer = new Timer();

}

public void contextInitialized(ServletContextEvent arg0) {

// 初次執行時間為明天0點5分,周期為24小時

Calendar mingtian = Calendar.getInstance();

mingtian.set(Calendar.DAY_OF_MONTH,

mingtian.get(Calendar.DAY_OF_MONTH) + 1);

mingtian.set(Calendar.HOUR_OF_DAY, 0);

mingtian.set(Calendar.MINUTE, 5);

mingtian.set(Calendar.SECOND, 0);

importTimer.schedule(new ExifImportTask(), mingtian.getTime(), pireod);

}

public void contextDestroyed(ServletContextEvent arg0) {

importTimer.cancel();

}

4 查詢界面設計及實現

查詢界面設置經常查詢的關鍵選項,如時間、作者、位置、圖像描述或來源等,提交數據后,系統對查詢字段進行查詢處理,查詢顯示符合條件的照片信息及縮略圖,幫助更精確的鎖定所需照片。查詢代碼如下:

public class CustomQueryAction extends DispatchAction {

public ActionForward choose(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

String sql="select ";

List displayList = new ArrayList();

HttpSession session = request.getSession();

session.setAttribute("postList", null);//每次查詢前清空

String[] checked = request.getParameterValues("checkbox");

for(int i=0;i

sql += checked[i]+",";

displayList.add(checked[i]);

}

sql =sql.substring(0, sql.length()-1)+" from V_Employee where 1=1";//從視圖中查詢數據

System.out.println(sql);

session.setAttribute("querySql", sql);//存入session,方便根據不同條件再查詢

StaffRepolyDaoImpl staff=new StaffRepolyDaoImpl();

List postList = staff.postExecuteQuery();

session.setAttribute("postList", postList);//查詢結果

session.setAttribute("display", displayList);//自定義查詢的屬性

System.out.println(displayList.size());

return mapping.findForward("query");

}

}

5 結語

本文較全面地介紹了基于Java庫提供的metadata-extractor類解析EXIF信息并提取入庫,為照片的快速查找建立了便捷途徑。符合條件的照片也可一一羅列,在預覽框及EXIF參數列表里顯示區別,比起一般的EXIF信息查看器,本系統不僅解決了照片按時間或按指定屬性分類入庫的存儲問題,還解決了海量照片的管理及信息提取問題,為防震減災野外科考研究提供幫助。

參考文獻:

[1] 普雷斯曼.軟件工程:實踐者研究方法[M].北京:機械工業出版社,2011.

[2] openopen.JHeader讀取和修改相片EXIF信息的Java類庫[EB/OL].httpwww.openopen.comlibviewopen134658175111 5.html.

[3] 藍 雨.查看EXIF完全掌握拍攝信息[J].電子世界,2006(7):25-27.

[4] 楊曉鋒.數碼圖像文件格式標準EXIF解讀[J].照相機,2005(5):69-71.

[5] 韓曉飛,單 波.Seismic Unix在地質雷達數據處理中的應用[J].山西建筑,2015,41(19):256-258.

[6] http://www.sharejs.com/codes/java/8723,2015.

[7] 梁永霖.基于J2ME的旅游信息查詢系統設計與實現[J].福建電腦,2008(8):143-144.

[8] 黎 曜.基于EXIF的圖片信息采集管理系統的設計與實現[J].計算機與現代化,2012(9):135-136.

猜你喜歡
數據庫功能信息
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
關于非首都功能疏解的幾點思考
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
中西醫結合治療甲狀腺功能亢進癥31例
辨證施護在輕度認知功能損害中的應用
主站蜘蛛池模板: 国产精品主播| 亚洲最大看欧美片网站地址| 久久婷婷五月综合色一区二区| 中国一级特黄视频| 看国产毛片| 欧美第二区| 欧美一区二区三区国产精品| 国产网站免费看| 欧美一区日韩一区中文字幕页| 亚洲精品男人天堂| 国产亚洲成AⅤ人片在线观看| 国产男女免费完整版视频| 亚洲综合精品香蕉久久网| 国产精品自在线拍国产电影| 香蕉久久国产超碰青草| 国产成人午夜福利免费无码r| 2021最新国产精品网站| 成人久久18免费网站| 婷婷色丁香综合激情| 无码aaa视频| 91久久精品国产| a级毛片在线免费观看| 六月婷婷精品视频在线观看| 亚洲va欧美ⅴa国产va影院| 丁香婷婷久久| 9999在线视频| 久久综合九色综合97网| 欧美日韩午夜视频在线观看 | 91在线播放免费不卡无毒| 亚洲日本www| www.精品国产| 亚洲人妖在线| www中文字幕在线观看| 日韩精品久久无码中文字幕色欲| 亚洲国产成人超福利久久精品| 青青草国产一区二区三区| 国产高清色视频免费看的网址| 性视频久久| 欧美中出一区二区| 青青青视频蜜桃一区二区| 久久永久免费人妻精品| 99在线视频免费| 97色婷婷成人综合在线观看| 丰满人妻久久中文字幕| 国产欧美日韩一区二区视频在线| 永久免费无码成人网站| 国产视频欧美| 久久青草免费91线频观看不卡| 国产成人永久免费视频| 久久综合结合久久狠狠狠97色| 国产白丝av| 天堂网亚洲综合在线| 免费a级毛片视频| 国产特一级毛片| 国产a v无码专区亚洲av| 日韩 欧美 小说 综合网 另类| 国产成人精品免费视频大全五级| 成人在线第一页| 国产青青草视频| 国产欧美视频在线| 久久久久久久久18禁秘| 国内熟女少妇一线天| 草草线在成年免费视频2| 自偷自拍三级全三级视频| 97精品国产高清久久久久蜜芽 | 国产精品手机在线播放| 狠狠亚洲婷婷综合色香| 欧美黄网站免费观看| 在线观看精品国产入口| 亚洲精品成人片在线观看| 亚洲第一网站男人都懂| 熟妇人妻无乱码中文字幕真矢织江 | 漂亮人妻被中出中文字幕久久| 国产成人凹凸视频在线| 国产亚洲成AⅤ人片在线观看| 国产69精品久久久久孕妇大杂乱 | 国产在线视频欧美亚综合| 91日本在线观看亚洲精品| 一级毛片免费观看不卡视频| 在线观看视频99| 国产av色站网站| 欧美亚洲香蕉|