XXXII. Exif Functions


With the exif extension you are able to work with image meta data. For example, you may use exif functions to read meta data of pictures taken from digital cameras by working with information stored in the headers of the JPEG and TIFF images.


Your PHP must be compiled in with --enable-exif. PHP does not require any additional library for the exif module. Windows users must also have the mbstring extension enabled.


To enable exif-support configure PHP with --enable-exif

Windows users must enable both the php_mbstring.dll and php_exif.dll DLL's in php.ini. The php_mbstring.dll DLL must be loaded before the php_exif.dll DLL so adjust your php.ini accordingly.


这些函数的行为受 php.ini 的影响。

mbstring 模块可用时,exif 支持用户注释中的 Unicode 和 JIS 字符编码的自动转换。这是通过先用指定字符集将注释解码,把结果再用另一个符合你的 HTTP 输出的字符集编码来实现的。

表格 1. Exif configuration options

exif.encode_unicode"ISO-8859-15"PHP_INI_ALL自 PHP 4.3.0 起可用。
exif.decode_unicode_motorola"UCS-2BE"PHP_INI_ALL自 PHP 4.3.0 起可用。
exif.decode_unicode_intel"UCS-2LE"PHP_INI_ALL自 PHP 4.3.0 起可用。
exif.encode_jis""PHP_INI_ALL自 PHP 4.3.0 起可用。
exif.decode_jis_motorola"JIS"PHP_INI_ALL自 PHP 4.3.0 起可用。
exif.decode_jis_intel"JIS"PHP_INI_ALL自 PHP 4.3.0 起可用。
有关 PHP_INI_* 常量进一步的细节与定义参见附录 G


exif.encode_unicode string

exif.encode_unicode 定义了 UNICODE 用户注释被处理的字符集。默认为 ISO-8859-15,可用于大多数非亚洲国家。本设置可以为空或者必须为一个 mbstring 所支持的编码。如果为空,则使用当前 mbstring 内部使用的编码。

exif.decode_unicode_motorola string

exif.decode_unicode_motorola 定义了 Unicode 编码的用户注释的图像内部字符集,如果图像是摩托罗拉字节顺序(big-endian)的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 UCS-2BE。

exif.decode_unicode_intel string

exif.decode_unicode_intel 定义了 Unicode 编码的用户注释的图像内部字符集,如果图像是英特尔字节顺序(little-endian)的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 UCS-2LE。

exif.encode_jis string

exif.encode_jis 定义了 JIS 用户注释被处理的字符集。默认为空值,迫使函数使用当前 mbstring 使用的内部编码。

exif.decode_jis_motorola string

exif.decode_jis_motorola 定义了 JIS 编码的用户注释的图像内部字符集,如果图像是摩托罗拉字节顺序(big-endian)的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 JIS。

exif.decode_jis_intel string

exif.decode_jis_intel 定义了 JIS 编码的用户注释的图像内部字符集,如果图像是英特尔字节顺序(litle-endian)的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 JIS。




以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。


The exif_imagetype() lists several related built-in constants.

exif_imagetype -- 判断一个图像的类型
exif_read_data --  从 JPEGTIFF 文件中读取 EXIF 头信息
exif_tagname -- Get the header name for an index
exif_thumbnail -- 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
read_exif_data -- exif_read_data() 的别名

add a note add a note User Contributed Notes
ishida at w3 dot org
21-Sep-2006 07:36
Not to mention Arabic, Hebrew, Chinese, the many Indic scripts, Thai, Greek, etc., etc.
filter_phpmanual at oderwat dot de
03-Sep-2005 10:26
I just found that I had to change the order of modules in php.ini to use the exif extension in php 4.3.11 on my windows system.

If I include the exif module in the order given in php.ini (first exif .. later mbstring) apache fails without any obvious reason.

After placing the exif module after the mbstring module it works.

I thought that info may prevent other people to search hours for errors in their setup too...
23-Dec-2004 06:55
exif.encode_unicode  string

   exif.encode_unicode defines the characterset UNICODE user comments are handled. This defaults to ISO-8859-15 which should work for most non Asian countries. The setting can be empty or must be an encoding supported by mbstring. If it is empty the current internal encoding of mbstring is used.

How come ISO-8859-15 works for most non-Asian countries? It's only for West European and does NOT work for Russian, Greek, Albanian, Polish, Czech, and so forth. The default should be 'UTF-8'