Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 6209

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>exif_read_data</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="Exif Functions"
HREF="ref.exif.html"><LINK
REL="PREVIOUS"
TITLE="exif_imagetype"
HREF="function.exif-imagetype.html"><LINK
REL="NEXT"
TITLE="exif_tagname"
HREF="function.exif-tagname.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="refentry"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="function.exif-imagetype.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="function.exif-tagname.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="function.exif-read-data"
></A
>exif_read_data</H1
><DIV
CLASS="refnamediv"
><A
NAME="AEN48333"
></A
><P
>    (PHP 4 &#62;= 4.2.0, PHP 5)</P
>exif_read_data&nbsp;--&nbsp;
   从 <ACRONYM
CLASS="acronym"
>JPEG</ACRONYM
> 或 <ACRONYM
CLASS="acronym"
>TIFF</ACRONYM
>
   文件中读取 <ACRONYM
CLASS="acronym"
>EXIF</ACRONYM
> 头信息
  </DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48339"
></A
><H2
>说明</H2
>array <B
CLASS="methodname"
>exif_read_data</B
> ( string filename [, string sections [, bool arrays [, bool thumbnail]]] )<BR
></BR
><P
>&#13;   <B
CLASS="function"
>exif_read_data()</B
> 函数从 JPEG 或 TIFF 图像文件中读取 EXIF
   头信息。这样就可以读取数码相机产生的元数据。
  </P
><P
>&#13;   Exif 头信息往往存在于数码相机生成的 JPEG/TIFF
   图像中,但不幸的是每个数码相机制造商的标记都不同,因此(编写代码时)不能依赖于某个特定的
   Exif 头信息。
  </P
><P
>&#13;   Height 和 Width 是用和 <A
HREF="function.getimagesize.html"
><B
CLASS="function"
>getimagesize()</B
></A
>
   一样的方法计算的,因此它们的值不能是任何返回的头信息的部分。此外
   html 是一个 height/width 的文本字符串可以用于普通的 <ACRONYM
CLASS="acronym"
>HTML</ACRONYM
> 中。
  </P
><P
>&#13;   当一个 Exif 头信息包含有一个 Copyright 时注意它本身可以包含两个值。解决方案和
   Exif 2.10 标准不一致,COMPUTED 区段会同时返回
   <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Copyright.Photographer</I
></SPAN
> 和
   <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Copyright.Editor</I
></SPAN
>,但是 IFD0
   区段则包含有一个字节数组用 NULL 字符分隔开两个项目。或者只有第一项如果数据类型错误的话(Exif
   的正常行为)。COMPUTED 也会包含
   <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Copyright</I
></SPAN
>,要么是原始的版权字符串,要么是逗号分隔的摄像与编辑的版权信息。
  </P
><P
>&#13;   UserComment 标记和 Copyright
   有同样的问题。它也可以存储两个值,第一个是使用的编码方式,第二个是其值本身。如果这样则
   IFD0 区段仅包含编码方式或者一个字节数组。COMPUTED
   区段将存储两个值到 <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>UserCommentEncoding</I
></SPAN
> 和
   <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>UserComment</I
></SPAN
>。<SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>UserComment</I
></SPAN
>
   在两种情况下都可用因此应该优先使用它而不是 IFD0 区段中的该值。
  </P
><P
>&#13;   <B
CLASS="function"
>exif_read_data()</B
> 还会根据 EXIF
   规范(<A
HREF="http://exif.org/Exif2-2.PDF"
TARGET="_top"
>http://exif.org/Exif2-2.PDF</A
>,第
   20 页)来验证 EXIF 数据。
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    Windows ME/XP 在连接到数码相机时能清除掉
    Exif 头信息。更多信息见
    <A
HREF="http://www.canon.co.jp/Imaging/NOTICE/011214-e.html"
TARGET="_top"
>http://www.canon.co.jp/Imaging/NOTICE/011214-e.html</A
>。
   </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48376"
></A
><H2
>参数</H2
><P
>&#13;   <P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><CODE
CLASS="parameter"
>filename</CODE
></DT
><DD
><P
>&#13;       被读取的图像文件名。不能是 <ACRONYM
CLASS="acronym"
>URL</ACRONYM
>。
      </P
></DD
><DT
><CODE
CLASS="parameter"
>sections</CODE
></DT
><DD
><P
>&#13;       是需要存在于文件中的逗号分隔的区段列表用来产生结果数组。如果未找到所请求的区段则返回值为
       <TT
CLASS="constant"
><B
>FALSE</B
></TT
>。
       <DIV
CLASS="informaltable"
><P
></P
><A
NAME="AEN48392"
></A
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><TBODY
><TR
><TD
>FILE</TD
><TD
>FileName, FileSize, FileDateTime, SectionsFound</TD
></TR
><TR
><TD
>COMPUTED</TD
><TD
>&#13;            html,Width,Height,IsColor,可能有更多其它的。Height
            和 Width 是用和 <A
HREF="function.getimagesize.html"
><B
CLASS="function"
>getimagesize()</B
></A
>
            一样的方法计算的,因此它们的值不能是任何返回的头信息的部分。此外
            html 是一个 height/width 的文本字符串可以用于普通的 <ACRONYM
CLASS="acronym"
>HTML</ACRONYM
> 中。
           </TD
></TR
><TR
><TD
>ANY_TAG</TD
><TD
>任何包含有标记的信息,例如 IFD0,EXIF,...</TD
></TR
><TR
><TD
>IFD0</TD
><TD
>&#13;            所有 IFD0 的标记数据。在标准的图像文件中这包含了图像大小及其它。
           </TD
></TR
><TR
><TD
>THUMBNAIL</TD
><TD
>&#13;            如果有第二个 IFD,文件应该包含有缩略图。所有有关嵌入缩略图的标记信息都存储在本区。
           </TD
></TR
><TR
><TD
>COMMENT</TD
><TD
>JPEG 图像的注释头信息。</TD
></TR
><TR
><TD
>EXIF</TD
><TD
>&#13;            EXIF 区段是 IFDO 的子区,包含有图像的更多详细信息。大多数内容都是数码相机相关的。
           </TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
>
      </P
></DD
><DT
><CODE
CLASS="parameter"
>arrays</CODE
></DT
><DD
><P
>&#13;       指定了是否每个区段都成为一个数组。<CODE
CLASS="parameter"
>sections</CODE
>
       <TT
CLASS="literal"
>COMPUTED</TT
>,<TT
CLASS="literal"
>THUMBNAIL</TT
>
       和<TT
CLASS="literal"
>COMMENT</TT
>
       区段总是成为数组,因为它们里面包含的名字和其它区段冲突。
      </P
></DD
><DT
><CODE
CLASS="parameter"
>thumbnail</CODE
></DT
><DD
><P
>&#13;       当设定为 <TT
CLASS="constant"
><B
>TRUE</B
></TT
> 时,读取缩略图本身。否则只读取标记数据。
      </P
></DD
></DL
></DIV
>
  </P
></DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48433"
></A
><H2
>返回值</H2
><P
>&#13;   返回一个关联数组,键名是头信息名,值为与其相应的值。如果没有可供返回的数据,<B
CLASS="function"
>exif_read_data()</B
>
   将返回 <TT
CLASS="constant"
><B
>FALSE</B
></TT
>。
  </P
></DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48438"
></A
><H2
>更新日志</H2
><P
>&#13;   <DIV
CLASS="informaltable"
><P
></P
><A
NAME="AEN48441"
></A
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><THEAD
><TR
><TH
>版本</TH
><TH
>说明</TH
></TR
></THEAD
><TBODY
><TR
><TD
>4.3.0</TD
><TD
>&#13;        可以读取所有嵌入的 <ACRONYM
CLASS="acronym"
>IFD</ACRONYM
>
        数据,包括数组(也返回数组)。此外嵌入的缩略图的大小包括在
        <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>THUMBNAIL</I
></SPAN
> 子数组中并且
        <B
CLASS="function"
>exif_read_data()</B
> 可以将缩略图按照
        <ACRONYM
CLASS="acronym"
>TIFF</ACRONYM
> 格式返回。最后,不再有返回值最大长度的限制了(直到达到内存限定)。
       </TD
></TR
><TR
><TD
>4.3.0</TD
><TD
>&#13;        如果 PHP 有 <A
HREF="ref.mbstring.html"
>mbstring</A
>
        支持,则用户注释可以自动改变编码。此外,如果用户注释使用
        Unicode 或 JIS 编码,将会根据 EXIF 在 <TT
CLASS="filename"
>php.ini</TT
> 中的
        设置被自动改变。
       </TD
></TR
><TR
><TD
>4.3.0</TD
><TD
>&#13;        如果图像包含任何 IFD0 数据,则 COMPUTED 会包含有一项
        ByteOrderMotorola,对于 little-endian (intel) 字节顺序,其值为 0,对于
        big-endian (motorola) 字节顺序,其值为 1。此外,COMPUTED
        和 UserComment 在数据类型出错时也不再仅包含第一个版权条目。
       </TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
>
  </P
></DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48463"
></A
><H2
>范例</H2
><P
>&#13;   <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN48466"
></A
><P
><B
>例 1. <B
CLASS="function"
>exif_read_data()</B
> 例子</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">echo </font><font color="#DD0000">"test1.jpg:&lt;br /&gt;\n"</font><font color="#007700">;<br /></font><font color="#0000BB">$exif </font><font color="#007700">= </font><font color="#0000BB">exif_read_data</font><font color="#007700">(</font><font color="#DD0000">'tests/test1.jpg'</font><font color="#007700">, </font><font color="#DD0000">'IFD0'</font><font color="#007700">);<br />echo </font><font color="#0000BB">$exif</font><font color="#007700">===</font><font color="#0000BB">false </font><font color="#007700">? </font><font color="#DD0000">"No header data found.&lt;br /&gt;\n" </font><font color="#007700">: </font><font color="#DD0000">"Image contains headers&lt;br /&gt;\n"</font><font color="#007700">;<br /><br /></font><font color="#0000BB">$exif </font><font color="#007700">= </font><font color="#0000BB">exif_read_data</font><font color="#007700">(</font><font color="#DD0000">'tests/test2.jpg'</font><font color="#007700">, </font><font color="#0000BB">0</font><font color="#007700">, </font><font color="#0000BB">true</font><font color="#007700">);<br />echo </font><font color="#DD0000">"test2.jpg:&lt;br /&gt;\n"</font><font color="#007700">;<br />foreach (</font><font color="#0000BB">$exif </font><font color="#007700">as </font><font color="#0000BB">$key </font><font color="#007700">=&gt; </font><font color="#0000BB">$section</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach (</font><font color="#0000BB">$section </font><font color="#007700">as </font><font color="#0000BB">$name </font><font color="#007700">=&gt; </font><font color="#0000BB">$val</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">"$key.$name: $val&lt;br /&gt;</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
>&#13;     第一个调用失败了,因为图像没有头信息。
    </P
><P
>上例的输出类似于:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
test1.jpg:<br />No header data found.<br />test2.jpg:<br />FILE.FileName: test2.jpg<br />FILE.FileDateTime: 1017666176<br />FILE.FileSize: 1240<br />FILE.FileType: 2<br />FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT<br />COMPUTED.html: width="1" height="1"<br />COMPUTED.Height: 1<br />COMPUTED.Width: 1<br />COMPUTED.IsColor: 1<br />COMPUTED.ByteOrderMotorola: 1<br />COMPUTED.UserComment: Exif test image.<br />COMPUTED.UserCommentEncoding: ASCII<br />COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.<br />COMPUTED.Copyright.Photographer: Photo (c) M.Boerger<br />COMPUTED.Copyright.Editor: Edited by M.Boerger.<br />IFD0.Copyright: Photo (c) M.Boerger<br />IFD0.UserComment: ASCII<br />THUMBNAIL.JPEGInterchangeFormat: 134<br />THUMBNAIL.JPEGInterchangeFormatLength: 523<br />COMMENT.0: Comment #1.<br />COMMENT.1: Comment #2.<br />COMMENT.2: Comment #3end<br />THUMBNAIL.JPEGInterchangeFormat: 134<br />THUMBNAIL.Thumbnail.Height: 1<br />THUMBNAIL.Thumbnail.Height: 1</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
  </P
></DIV
><DIV
CLASS="refsect1"
><A
NAME="AEN48473"
></A
><H2
>参见</H2
><P
>&#13;   <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><A
HREF="function.exif-thumbnail.html"
><B
CLASS="function"
>exif_thumbnail()</B
></A
></TD
></TR
><TR
><TD
><A
HREF="function.getimagesize.html"
><B
CLASS="function"
>getimagesize()</B
></A
></TD
></TR
></TBODY
></TABLE
><P
></P
>
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="function.exif-imagetype.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="function.exif-tagname.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>exif_imagetype</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ref.exif.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>exif_tagname</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>