文件格式

本类阅读TOP10

·文件格式及说明
·DivX播放全攻略手册
·BitTorrent 协议规范1.0版
·http 协议学习笔记(一)
·win2000错误代码和提示
·802.1Q VLAN协议和802.1P协议的实现
·MICROSOFT EXCEL FILE FORMAT(BIFF2.1)
·SIP:构建新一代SoftSwitch
·网络用 端口1-99对照表
·rtsp协议相关之-rfc2326

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
EXIF格式分析及通过XML处理(5)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

EXIF格式分析及通过XML处理

 

猛禽[Mental Studio](个人专栏)(BLOG)

http://mental.mentsu.com

 

转换后的XML大致如下:

<?xml version="1.0" encoding="GB2312"?>

<ExifAPP1>

  <ExifID>Exif</ExifID>

  <TIFFHeader>

    <ByteOrder>II</ByteOrder>

    <Flag>0x002A</Flag>

    <IFD name="IFD0">

      <Count>0xB</Count>

      <Entry>

        <Tag>0x10E</Tag>

        <Type>2</Type>

        <Size>0xB</Size>

        <Value>          </Value>

      </Entry>

      <Entry>

        <Tag>0x10F</Tag>

        <Type>2</Type>

        <Size>0x6</Size>

        <Value>NIKON</Value>

      </Entry>

      <Entry>

        <Tag>0x110</Tag>

        <Type>2</Type>

        <Size>0x5</Size>

        <Value>E775</Value>

</Entry>

      <Entry>

        <Tag>0x8769</Tag>

        <Type>4</Type>

        <Size>0x1</Size>

        <Value>0x0000011C</Value>

      </Entry>

    </IFD>

    <IFD name="EXIF">

      <Count>0x18</Count>

      <Entry>

        <Tag>0x9000</Tag>

        <Type>7</Type>

        <Size>0x4</Size>

        <Value> 0x30 0x32 0x31 0x30</Value>

</Entry>

      <Entry>

        <Tag>0x9286</Tag>

        <Type>7</Type>

        <Size>0x7D</Size>

        <Value> 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20

 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20</Value>

</Entry>

      <Entry>

        <Tag>0xA005</Tag>

        <Type>4</Type>

        <Size>0x1</Size>

        <Value>0x00000376</Value>

</Entry>

    </IFD>

    <IFD name="InterOp">

      <Count>0x2</Count>

      <Entry>

        <Tag>0x1</Tag>

        <Type>2</Type>

        <Size>0x4</Size>

        <Value>R98</Value>

      </Entry>

      <Entry>

        <Tag>0x2</Tag>

        <Type>7</Type>

        <Size>0x4</Size>

        <Value> 0x30 0x31 0x30 0x30</Value>

      </Entry>

    </IFD>

    <IFD name="IFD1">

      <Count>0x6</Count>

      <Entry>

        <Tag>0x103</Tag>

        <Type>3</Type>

        <Size>0x1</Size>

        <Value>0x0006</Value>

</Entry>

    </IFD>

  </TIFFHeader>

</ExifAPP1>

有了这个XML就可以很方便地进行下一步处理了,比如用下面这个XSL文件对上面这个XML进行转换:

<?xml version="1.0" encoding="GB2312" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

  <xsl:for-each select="ExifAPP1/TIFFHeader/IFD/Entry">

    <xsl:choose>

      <xsl:when test="Tag[.='0x10F']">制造商=<xsl:value-of select="Value" />

      </xsl:when>

      <xsl:when test="Tag[.='0x110']">型号=<xsl:value-of select="Value" />

      </xsl:when>

    </xsl:choose>

  </xsl:for-each>

</xsl:template>

</xsl:stylesheet>

即可得出下面的结果:

制造商=NIKON

型号=E775

以后不论是增加Tag还是要改语言,只要修改这个XSL文件即可实现,完全不用修改EXIF处理部分的程序代码,非常的灵活方便。

 

[Mental Studio]猛禽

2004-4-3

参考文献:

[1]      JEITA CP-3451. Exchangeable image file format for digital still cameras:Exif Version 2.2. JEITA(Japan Electronics & Information Technolog Industries Association). April, 2002.

[2]      Aldus Corporation. TIFF Revision 6.0 Final - June 3,1992.

[3]      Gregory K.Wallace. The JPEG Still Picture Compression Standard.Communications of the ACM. April, 1991.

[4]      Eric Hamilton. JPEG File Interchange Format Version 1.02. C-Cube Microsystem. September 1, 1992.

(续完)




相关文章

相关软件