Do you drink java?



                像寫情書一樣coding

           

          [Image] 讀取數(shù)碼照片中的EXIF信息

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

          我在網(wǎng)上找到一個(gè)開源的開發(fā)工具包Metadata-Extractor,使用它可以像ACDSee等圖像軟件一樣讀取數(shù)碼照片的Exif信息。

          我寫了一個(gè)小Demo程序演示通過使用metadata-extractor-2.2.2讀取數(shù)碼照片的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();
          ????}

          ??}

          }


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

          測(cè)試圖片下載地址:
          http://www.aygfsteel.com/images/blogjava_net/leon/2174/o_P4140147.JPG

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

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

          評(píng)論

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

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

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

          我現(xiàn)在的用途是在程序里對(duì)一組底動(dòng)態(tài)范圍圖像進(jìn)行合成,調(diào)節(jié)圖像的曝光值等,把調(diào)節(jié)后的圖像重新編碼保存,這時(shí)修改Exif信息,重新設(shè)置曝光值等就有意義。

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

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

          Future plans
          Support for:
          ......
          Writing metadata into media files
            回復(fù)  更多評(píng)論   

          # re: [Image]讀取數(shù)碼照片中的Exif信息 2006-01-24 17:43 網(wǎng)者天下

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

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

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

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

          好東西,我一直在找這個(gè)。  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          DSC_0106.jpg
          本博客已經(jīng)搬家到CSDN
          http://blog.csdn.net/chenweionline




          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          About Technology

          My Favorite Website

          搜索

          積分與排名

          最新評(píng)論

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

          閱讀排行榜

          主站蜘蛛池模板: 仙桃市| 平定县| 威信县| 马山县| 丹阳市| 东阿县| 长乐市| 旺苍县| 忻州市| 安达市| 辰溪县| 罗山县| 四川省| 云浮市| 吉安县| 曲周县| 林西县| 大安市| 清苑县| 镇原县| 曲松县| 新和县| 泸定县| 平顶山市| 虎林市| 融水| 安乡县| 托克逊县| 清远市| 德令哈市| 湖州市| 乐业县| 清水县| 山阴县| 宝丰县| 镇雄县| 晋宁县| 犍为县| 乐业县| 高要市| 仙桃市|