亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        照片查詢系統(tǒng)設(shè)計與實(shí)現(xiàn)

        2018-07-03 01:30:00薄建杰扈桂讓
        山西建筑 2018年14期
        關(guān)鍵詞:數(shù)碼照片數(shù)據(jù)庫功能

        薄建杰 扈桂讓

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

        0 引言

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

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

        1 系統(tǒng)功能需求分析

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

        2 系統(tǒng)設(shè)計

        本系統(tǒng)設(shè)計為B/S三層式結(jié)構(gòu),數(shù)據(jù)層為提取出來的EXIF信息庫,以SQL Server開發(fā),業(yè)務(wù)邏輯層為圖片處理類,表示層為照片信息查詢端。其中邏輯層圖片處理類和表示層頁面查詢端均采用java語言開發(fā),查詢端采用C#語言開發(fā),系統(tǒng)運(yùn)行環(huán)境為IIS6.0。

        創(chuàng)建及開發(fā)數(shù)據(jù)庫:我們要創(chuàng)建exifform表,這個可以依據(jù)Access數(shù)據(jù)庫db.mdb。提取出的EXIF信息可以保存成文本文件存放于對應(yīng)目錄中,也可以采用數(shù)據(jù)庫jdbe—odbc橋?qū)崿F(xiàn)數(shù)據(jù)的連接查找。

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

        在做查詢界面前,依據(jù)EXIF信息字段及數(shù)據(jù)屬性建立數(shù)據(jù)庫及表結(jié)構(gòu),選擇出災(zāi)情調(diào)查、上報及科考時常用的要查詢字段,如時間、位置(即全球定位系統(tǒng)GPS)、圖像工具、作者等,然后實(shí)現(xiàn)從數(shù)據(jù)庫查詢并返回顯示的功能。數(shù)據(jù)庫主要字段設(shè)置見表1。

        表1 數(shù)據(jù)庫主要字段設(shè)置

        3 EXIF信息處理模塊功能的實(shí)現(xiàn)

        本系統(tǒng)利用數(shù)碼照片提供的EXIF信息為基礎(chǔ),對照片信息逐個讀取并解析。

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

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

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

        對應(yīng)信息如表2所示。

        表2 EXIF信息對應(yīng)表

        EXIF信息提取及保存模塊實(shí)現(xiàn):解析EXIF信息,一般用到的Java包是metadata-extractor,這個jar提供了支持獲取擴(kuò)展信息的功能。將照片上傳到WEB服務(wù)器指定的文件夾下,提取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監(jiān)聽器,并在Web.xml中配置,這樣在WEB服務(wù)器啟動時,會自動啟動EXIF信息導(dǎo)入任務(wù)。

        在Web.xml中的配置

        com.wincpt.exif.TaskInit

        Servlet監(jiān)聽器的代碼如下:

        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) {

        // 初次執(zhí)行時間為明天0點(diǎn)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 查詢界面設(shè)計及實(shí)現(xiàn)

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

        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";//從視圖中查詢數(shù)據(jù)

        System.out.println(sql);

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

        StaffRepolyDaoImpl staff=new StaffRepolyDaoImpl();

        List postList = staff.postExecuteQuery();

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

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

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

        return mapping.findForward("query");

        }

        }

        5 結(jié)語

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

        參考文獻(xiàn):

        [1] 普雷斯曼.軟件工程:實(shí)踐者研究方法[M].北京:機(jī)械工業(yè)出版社,2011.

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

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

        [4] 楊曉鋒.數(shù)碼圖像文件格式標(biāo)準(zhǔn)EXIF解讀[J].照相機(jī),2005(5):69-71.

        [5] 韓曉飛,單 波.Seismic Unix在地質(zhì)雷達(dá)數(shù)據(jù)處理中的應(yīng)用[J].山西建筑,2015,41(19):256-258.

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

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

        [8] 黎 曜.基于EXIF的圖片信息采集管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)與現(xiàn)代化,2012(9):135-136.

        猜你喜歡
        數(shù)碼照片數(shù)據(jù)庫功能
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        數(shù)碼照片檔案管理現(xiàn)狀分析與思考
        卷宗(2021年13期)2021-04-14 22:32:40
        Photoshop Alpha通道摳圖技術(shù)在數(shù)碼照片后期處理中的應(yīng)用
        關(guān)于數(shù)碼照片檔案管理問題的研究
        北京檔案(2020年4期)2020-04-27 08:55:03
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        成人国产精品一区二区网站公司| 精品国产又大又黄又粗av| 亚洲av第一区综合激情久久久| 日本女同视频一区二区三区| 开心五月天第四色婷婷| 青娱乐极品视觉盛宴国产视频| 中文无码乱人伦中文视频在线v| 免费高清日本中文| 一区二区视频网站在线观看 | 你懂的视频网站亚洲视频| 日日噜噜夜夜狠狠视频| 久久久老熟女一区二区三区| 狠狠躁夜夜躁无码中文字幕| 国产美女亚洲精品一区| 国产亚洲精品一区二区在线观看| 国产成人av一区二区三区不卡| 性无码免费一区二区三区在线| 韩国三级中文字幕hd久久精品 | av天堂一区二区三区精品| 24小时在线免费av| 国产综合久久久久久鬼色| 亚洲av无码第一区二区三区| 亚洲午夜无码视频在线播放| 激情免费视频一区二区三区| 国产视频自拍一区在线观看| 国产女人高潮叫床免费视频| 中文字幕在线日韩| 亚洲视频在线中文字幕乱码| 精品少妇一区二区三区免费| 国产成人无码18禁午夜福利p| 国产精品99久久久久久宅男| 太大太粗太爽免费视频| 精品人妻av一区二区三区四区| 蜜臀av在线播放一区二区三区| 日韩精品无码免费专区网站| 精品综合久久久久久99| 色噜噜亚洲精品中文字幕| 国色天香中文字幕在线视频| 夜夜欢性恔免费视频| 99久久精品国产片| 色婷婷久久综合中文蜜桃|