<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Do you drink java?



          像寫情書一樣coding

     

    [Image] 讀取數碼照片中的EXIF信息

    相信大家都有使用數碼相機拍照的經歷,一張數碼照片可以包含的內容遠遠超過了我們當前觀察到的景物,他可能包括攝影時的光圈、快門、ISO、日期時間等各種與當時攝影條件相關的訊息,相機品牌型號,色彩編碼,拍攝時錄制的聲音以及全球定位系統(GPS)等信息。這些信息都是存放在一個叫做Exif的文件里,然后把Exif文件放置在我們熟知的 JPEG/TIFF 文件的頭部,也就是說 EXIF 信息是鑲嵌在 JPEG/TIFF 圖像文件格式內的一組拍攝參數。

    我在網上找到一個開源的開發工具包Metadata-Extractor,使用它可以像ACDSee等圖像軟件一樣讀取數碼照片的Exif信息。

    我寫了一個小Demo程序演示通過使用metadata-extractor-2.2.2讀取數碼照片的Exif信息并從Exif中讀取圖像縮略圖。
    import?java.io.*;
    import?java.nio.*;
    import?java.nio.channels.*;
    import?java.util.*;

    import?com.drew.imaging.jpeg.*;
    import?com.drew.metadata.*;
    import?com.drew.metadata.exif.*;


    ?
    public?class?ExifExtractor?{
    ??
    public?ExifExtractor()?{
    ??}


    ??
    public?static?void?main(String[]?args)?{
    ????
    try?{
    ??????Metadata?metadata?
    =?JpegMetadataReader.readMetadata(new?File("o_P4140147.JPG.jpg"));

    ??????Iterator?directories?
    =?metadata.getDirectoryIterator();
    ??????
    while?(directories.hasNext())?{
    ????????Directory?directory?
    =?(Directory)?directories.next();

    ????????Iterator?tags?
    =?directory.getTagIterator();
    ????????
    while?(tags.hasNext())?{
    ??????????Tag?tag?
    =?(Tag)?tags.next();

    ??????????
    //?modify?Exif
    //??????????if?(tag.getTagName().equalsIgnoreCase("User?Comment"))?{
    //??????????????????????Directory?exifDirectory?=?metadata.getDirectory(ExifDirectory.class);
    //??????????????????????exifDirectory.setString(tag.getTagType(),?"LeonChen");
    //??????????}

    ??????????
    //?read?thumbnail
    ??????????if?(tag.getTagName().equalsIgnoreCase("Thumbnail?Data"))?{
    ????????????Directory?exifDirectory?
    =?metadata.getDirectory(ExifDirectory.class);

    ????????????
    byte[]?dataBuffer?=?exifDirectory.getByteArray(tag.getTagType());
    ????????????FileChannel?channel?
    =?new?RandomAccessFile(new?File("thumbnail.jpg"),
    ????????????????
    "rw").getChannel();
    ????????????MappedByteBuffer?fileBuffer?
    =?channel.map(FileChannel.MapMode.
    ????????????????READ_WRITE,?
    0,?dataBuffer.length);
    ????????????fileBuffer.put(dataBuffer);
    ????????????fileBuffer.force();
    ????????????channel.close();
    ??????????}


    ??????????
    //?print?exif
    ??????????System.out.println(tag);
    ????????}

    ??????}

    ????}

    ????
    catch?(FileNotFoundException?ex)?{
    ??????ex.printStackTrace();
    ????}

    ????
    catch?(IOException?ex)?{
    ??????ex.printStackTrace();
    ????}

    ????
    catch?(MetadataException?ex)?{
    ??????ex.printStackTrace();
    ????}

    ????
    catch?(JpegProcessingException?ex)?{
    ??????ex.printStackTrace();
    ????}

    ??}

    }


    我在上面的測試程序里注釋了一段代碼,他們可以在內存中修改Exif中某一節點的信息,但是我不知道怎樣才能將修改后的Exif信息保存到文件,如果你知道方法,請給我留言。

    測試圖片下載地址:
    http://www.tkk7.com/images/blogjava_net/leon/2174/o_P4140147.JPG

    EXIF參考:
    http://www.exif.org

    posted on 2005-11-29 17:04 leon 閱讀(2587) 評論(5)  編輯  收藏 所屬分類: OpenSource

    評論

    # re: [Image]讀取數碼照片中的Exif信息 2005-11-30 13:19 elex

    如果能Exif中的東西,是不是就意味著光圈和快門甚至相機品牌的數據都有可能更改?那EXIF還有什么意義。???
    5~~~~~~~~~~~~~  回復  更多評論   

    # re: [Image]讀取數碼照片中的Exif信息 2005-11-30 13:28 leon

    我現在的用途是在程序里對一組底動態范圍圖像進行合成,調節圖像的曝光值等,把調節后的圖像重新編碼保存,這時修改Exif信息,重新設置曝光值等就有意義。

    或者你看在PS上處理過的照片,Exif里都會留下PS的痕跡。。。

    Metadata-Extractor以后的版本可能會支持,就是不知道要等到猴年馬月。。。

    Future plans
    Support for:
    ......
    Writing metadata into media files
      回復  更多評論   

    # re: [Image]讀取數碼照片中的Exif信息 2006-01-24 17:43 網者天下

    呵呵,我也在看這方面的東西,好象保存要比讀取難得多了  回復  更多評論   

    # re: [Image]讀取數碼照片中的Exif信息 2006-01-24 20:50 leon

    我想也不會太難,研究一下Exif格式然后自己向里面寫。
    只是不想這上面畫太多功夫,覺得不值得,想偷懶找些第三方的庫。  回復  更多評論   

    # re: [Image] 讀取數碼照片中的EXIF信息 2007-03-29 15:30 游客

    好東西,我一直在找這個。  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    導航

    統計

    公告

    DSC_0106.jpg
    本博客已經搬家到CSDN
    http://blog.csdn.net/chenweionline




    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    About Technology

    My Favorite Website

    搜索

    積分與排名

    最新評論

    • 1.?re: 胃痙攣
    • 兄弟們你們都做胃鏡了嗎開的啥藥?有什么養胃秘方啊?請賜教啊!
    • --我也進來了
    • 2.?re: 胃痙攣
    • @痛啊
      我感覺比生孩子還疼,生孩子還能有意識呢!這種疼還叫不出來連說話的力氣都沒了
    • --我也進來了
    • 3.?re: 胃痙攣
    • 評論內容較長,點擊標題查看
    • --我也進來了
    • 4.?re: 胃痙攣
    • 我都周期性的發作,算來有4年了 。每年最少一次,一次最少2天。吃了好多藥就差沒去做胃鏡了。 剛剛發作就隨便煮了點姜湯喝下就好了些,不知道還會不會發作了。
    • --許家洛
    • 5.?re: 胃痙攣
    • 我昨晚也疼的要死。。上次疼的直接120送醫院了,一上120我竟然就不疼了,醫院里掉了瓶鹽水就放回家了。這次正好國外旅游中,幾乎疼了一整晚,整個在床上翻滾狀態了。今天不疼了,就是整個人難受。。。求助阿
    • --胃疼
    • 6.?re: [Swing]在 JFileChooser 中進行文件驗證的小技巧
    • 輸入*還是會有問題
    • --ngh
    • 7.?re: 胃痙攣[未登錄]
    • 昨晚一夜的身不如死的感覺,胃痙攣兄不要來了吧 ,求你了
    • --李飛
    • 8.?re: 胃痙攣
    • 評論內容較長,點擊標題查看
    • --daidai
    • 9.?re: 胃痙攣
    • 評論內容較長,點擊標題查看
    • --痛啊
    • 10.?re: 胃痙攣
    • 媽啊 痛的快死了~!第一次感覺過這樣的痛啊~!和女的生孩子有的一比了吧~!哭哭哭~!
    • --痛啊

    閱讀排行榜

    主站蜘蛛池模板: 亚洲熟妇av午夜无码不卡| 精品亚洲综合久久中文字幕| 亚洲AV色吊丝无码| 五月婷婷综合免费| 亚洲情A成黄在线观看动漫软件| 成人女人A级毛片免费软件| 亚洲国产成人九九综合| 99在线精品视频观看免费| 亚洲av无码片区一区二区三区| 亚洲免费视频网址| 亚洲综合在线一区二区三区| 免费视频中文字幕| 香蕉视频免费在线| 亚洲熟妇无码另类久久久| 不卡视频免费在线观看| 亚洲国产精品免费视频| 久久久久久国产精品免费免费| 欧美日韩亚洲精品| 亚洲综合无码AV一区二区 | 69视频在线是免费观看| 亚洲毛片一级带毛片基地| 97人伦色伦成人免费视频| 精品无码专区亚洲| 亚洲一区二区三区偷拍女厕 | 久久国产精品成人片免费| 91亚洲性爱在线视频| 精品国产免费观看久久久| 亚洲免费日韩无码系列| 亚洲国产美国国产综合一区二区 | 亚洲综合无码无在线观看 | 亚洲成色在线影院| 成人性生交大片免费看午夜a| 暖暖免费中文在线日本| 亚洲精品人成在线观看| 午夜两性色视频免费网站| 国产久爱免费精品视频| 亚洲日韩中文字幕天堂不卡| 国产三级免费观看| 日韩精品无码一区二区三区免费| 亚洲 欧洲 自拍 另类 校园| 亚洲伊人久久大香线蕉综合图片|