﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Do you drink java?-随笔分类-OpenSource</title><link>http://www.blogjava.net/leon/category/4153.html</link><description>&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;像写情书一样coding</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:31:28 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:31:28 GMT</pubDate><ttl>60</ttl><item><title>[Image] 读取数码照片中的EXIF信息</title><link>http://www.blogjava.net/leon/archive/2005/11/29/21845.html</link><dc:creator>leon</dc:creator><author>leon</author><pubDate>Tue, 29 Nov 2005 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/leon/archive/2005/11/29/21845.html</guid><wfw:comment>http://www.blogjava.net/leon/comments/21845.html</wfw:comment><comments>http://www.blogjava.net/leon/archive/2005/11/29/21845.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/leon/comments/commentRss/21845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leon/services/trackbacks/21845.html</trackback:ping><description><![CDATA[相信大家都有使用数码相机拍照的经历，一张数码照片可以包含的内容远远超过了我们当前观察到的景物，他可能包括摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息，相机品牌型号，色彩编码，拍摄时录制的声音以及全球定位系统（GPS）等信息。这些信息都是存放在一个叫做Exif的文件里，然后把Exif文件放置在我们熟知的 JPEG/TIFF 文件的头部，也就是说 EXIF 信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数。<br /><br />我在网上找到一个开源的开发工具包<a href="http://www.drewnoakes.com/code/exif/">Metadata-Extractor</a>，使用它可以像ACDSee等图像软件一样读取数码照片的Exif信息。<br /><br />我写了一个小Demo程序演示通过使用metadata-extractor-2.2.2读取数码照片的Exif信息并从Exif中读取图像缩略图。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.nio.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.nio.channels.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.drew.imaging.jpeg.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.drew.metadata.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> com.drew.metadata.exif.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_209_1941_Open_Image" onclick="this.style.display='none'; Codehighlighter1_209_1941_Open_Text.style.display='none'; Codehighlighter1_209_1941_Closed_Image.style.display='inline'; Codehighlighter1_209_1941_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_209_1941_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_209_1941_Closed_Text.style.display='none'; Codehighlighter1_209_1941_Open_Image.style.display='inline'; Codehighlighter1_209_1941_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ExifExtractor </span><span id="Codehighlighter1_209_1941_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_209_1941_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_236_240_Open_Image" onclick="this.style.display='none'; Codehighlighter1_236_240_Open_Text.style.display='none'; Codehighlighter1_236_240_Closed_Image.style.display='inline'; Codehighlighter1_236_240_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_236_240_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_236_240_Closed_Text.style.display='none'; Codehighlighter1_236_240_Open_Image.style.display='inline'; Codehighlighter1_236_240_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ExifExtractor() </span><span id="Codehighlighter1_236_240_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_236_240_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_284_1939_Open_Image" onclick="this.style.display='none'; Codehighlighter1_284_1939_Open_Text.style.display='none'; Codehighlighter1_284_1939_Closed_Image.style.display='inline'; Codehighlighter1_284_1939_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_284_1939_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_284_1939_Closed_Text.style.display='none'; Codehighlighter1_284_1939_Open_Image.style.display='inline'; Codehighlighter1_284_1939_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_284_1939_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_284_1939_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_294_1655_Open_Image" onclick="this.style.display='none'; Codehighlighter1_294_1655_Open_Text.style.display='none'; Codehighlighter1_294_1655_Closed_Image.style.display='inline'; Codehighlighter1_294_1655_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_294_1655_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_294_1655_Closed_Text.style.display='none'; Codehighlighter1_294_1655_Open_Image.style.display='inline'; Codehighlighter1_294_1655_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_294_1655_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_294_1655_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      Metadata metadata </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> JpegMetadataReader.readMetadata(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">o_P4140147.JPG.jpg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      Iterator directories </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> metadata.getDirectoryIterator();<br /><img id="Codehighlighter1_486_1649_Open_Image" onclick="this.style.display='none'; Codehighlighter1_486_1649_Open_Text.style.display='none'; Codehighlighter1_486_1649_Closed_Image.style.display='inline'; Codehighlighter1_486_1649_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_486_1649_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_486_1649_Closed_Text.style.display='none'; Codehighlighter1_486_1649_Open_Image.style.display='inline'; Codehighlighter1_486_1649_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (directories.hasNext()) </span><span id="Codehighlighter1_486_1649_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_486_1649_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Directory directory </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Directory) directories.next();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Iterator tags </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> directory.getTagIterator();<br /><img id="Codehighlighter1_634_1641_Open_Image" onclick="this.style.display='none'; Codehighlighter1_634_1641_Open_Text.style.display='none'; Codehighlighter1_634_1641_Closed_Image.style.display='inline'; Codehighlighter1_634_1641_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_634_1641_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_634_1641_Closed_Text.style.display='none'; Codehighlighter1_634_1641_Open_Image.style.display='inline'; Codehighlighter1_634_1641_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (tags.hasNext()) </span><span id="Codehighlighter1_634_1641_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_634_1641_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          Tag tag </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Tag) tags.next();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> modify Exif<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">          if (tag.getTagName().equalsIgnoreCase("User Comment")) {<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">                      Directory exifDirectory = metadata.getDirectory(ExifDirectory.class);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">                      exifDirectory.setString(tag.getTagType(), "LeonChen");<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">          }<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> read thumbnail</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_1053_1571_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1053_1571_Open_Text.style.display='none'; Codehighlighter1_1053_1571_Closed_Image.style.display='inline'; Codehighlighter1_1053_1571_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1053_1571_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1053_1571_Closed_Text.style.display='none'; Codehighlighter1_1053_1571_Open_Image.style.display='inline'; Codehighlighter1_1053_1571_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">          </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (tag.getTagName().equalsIgnoreCase(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Thumbnail Data</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)) </span><span id="Codehighlighter1_1053_1571_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1053_1571_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Directory exifDirectory </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> metadata.getDirectory(ExifDirectory.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] dataBuffer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> exifDirectory.getByteArray(tag.getTagType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            FileChannel channel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RandomAccessFile(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">thumbnail.jpg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rw</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).getChannel();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            MappedByteBuffer fileBuffer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> channel.map(FileChannel.MapMode.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                READ_WRITE, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, dataBuffer.length);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            fileBuffer.put(dataBuffer);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            fileBuffer.force();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            channel.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />          }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> print exif</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">          System.out.println(tag);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />      }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1694_1728_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1694_1728_Open_Text.style.display='none'; Codehighlighter1_1694_1728_Closed_Image.style.display='inline'; Codehighlighter1_1694_1728_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1694_1728_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1694_1728_Closed_Text.style.display='none'; Codehighlighter1_1694_1728_Open_Image.style.display='inline'; Codehighlighter1_1694_1728_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (FileNotFoundException ex) </span><span id="Codehighlighter1_1694_1728_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1694_1728_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      ex.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1757_1791_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1757_1791_Open_Text.style.display='none'; Codehighlighter1_1757_1791_Closed_Image.style.display='inline'; Codehighlighter1_1757_1791_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1757_1791_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1757_1791_Closed_Text.style.display='none'; Codehighlighter1_1757_1791_Open_Image.style.display='inline'; Codehighlighter1_1757_1791_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException ex) </span><span id="Codehighlighter1_1757_1791_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1757_1791_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      ex.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1826_1860_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1826_1860_Open_Text.style.display='none'; Codehighlighter1_1826_1860_Closed_Image.style.display='inline'; Codehighlighter1_1826_1860_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1826_1860_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1826_1860_Closed_Text.style.display='none'; Codehighlighter1_1826_1860_Open_Image.style.display='inline'; Codehighlighter1_1826_1860_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (MetadataException ex) </span><span id="Codehighlighter1_1826_1860_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1826_1860_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      ex.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1901_1935_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1901_1935_Open_Text.style.display='none'; Codehighlighter1_1901_1935_Closed_Image.style.display='inline'; Codehighlighter1_1901_1935_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1901_1935_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1901_1935_Closed_Text.style.display='none'; Codehighlighter1_1901_1935_Open_Image.style.display='inline'; Codehighlighter1_1901_1935_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (JpegProcessingException ex) </span><span id="Codehighlighter1_1901_1935_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1901_1935_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      ex.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />我在上面的测试程序里注释了一段代码，他们可以在内存中修改Exif中某一节点的信息，但是我不知道怎样才能将修改后的Exif信息保存到文件，如果你知道方法，请给我留言。<br /><br />测试图片下载地址：<br /><a href="/images/blogjava_net/leon/2174/o_P4140147.JPG">http://www.blogjava.net/images/blogjava_net/leon/2174/o_P4140147.JPG<br /></a><br />EXIF参考：<br /><a href="http://www.exif.org">http://www.exif.org</a><img src ="http://www.blogjava.net/leon/aggbug/21845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leon/" target="_blank">leon</a> 2005-11-29 17:04 <a href="http://www.blogjava.net/leon/archive/2005/11/29/21845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>