先来了解什么是图片的Exif信息
Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。简单地说,Exif=JPEG+拍摄参数。因此,你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。
以上引自百度百科。
读取照片的exif在很多时候都没有必要,但相对于一些探讨摄影技术的站点,那么读取照片的exif信息就显得尤为重要了,比如摄影论坛蜂鸟。
截图自蜂鸟论坛,红圈信息部分就是程序读取照片的exif信息。我们把图片下载到本地,使用光影魔术手打开图片看看它的Exif信息,当BG然除了光影还有很多工具都能查看图片的Exif值。
除了Exif信息里的镜头值读不出来以外其余的值都能正确读出来。
开启PHP模块
默认情况下,PHP读取图片Exif信息模块是不开启的,我们需要先开启这个模块。
开启Exif模块需要mbstring支持,所以先来安装mbstring,以下是以Linux环境为例,其它环境类似。
安装mbstring模块
首先找到php源码包位置,直接进入ext/mbstring,执行以下命令安装,具体参数得看自己的环境。
[root@lee ext]# cd /data0/software/php/ext/mbstring
[root@lee mbstring]# /usr/local/webserver/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee mbstring]# make && make install
Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files: /usr/local/webserver/php/include/php/
[root@lee mbstring]#
安装好以后,我们可以进入extensions目录看看模块是否存在,存在表示安装成功。
[root@lee mbstring]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]# ll
总用量 1880
-rwxr-xr-x. 1 root root 414405 6月 12 2012 eaccelerator.so
-rwxr-xr-x. 1 root root 1091242 9月 23 2011 imagick.so
-rwxr-xr-x. 1 root root 5285 2月 20 15:07 mbstring.so
-rwxr-xr-x. 1 root root 246752 9月 23 2011 memcache.so
-rwxr-xr-x. 1 root root 154252 9月 23 2011 pdo_mysql.so
安装exif模块
同安装mbstring模块类似,先找到源码位置并cd进去并配置安装,具体参数得看自己的环境。
[root@lee exif]# cd /data0/software/php-5.3.13/ext/exif
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee exif]# make && make install
Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee exif]#
进入extensions目录验证是否安装成功
[root@lee exif]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]# ll
总用量 2036
-rwxr-xr-x. 1 root root 414405 6月 12 2012 eaccelerator.so
-rwxr-xr-x. 1 root root 158554 2月 20 15:25 exif.so
-rwxr-xr-x. 1 root root 1091242 9月 23 2011 imagick.so
-rwxr-xr-x. 1 root root 5285 2月 20 15:07 mbstring.so
-rwxr-xr-x. 1 root root 246752 9月 23 2011 memcache.so
-rwxr-xr-x. 1 root root 154252 9月 23 2011 pdo_mysql.so
[root@lee no-debug-non-zts-20090626]#
exif.so模块已经存在。
在php.ini中添加模块
打开php.ini添加以下两行
extension = "exif.so"
并且确认你的extension_dir值与你安装模块时提示的Installing shared extensions值一致,比如我安装模块时提示我的extensions位置是
那么你的php.ini里的extension_dir要指向正确目录
保存php.ini,重启webserver。
打开phpinfo()找到相应属性看看是否已正常工作
正常情况下你会看到如下两个模块信息
使用exif_read_data()读取图片的exif信息
支持读取exif信息的图片类型在phpinfo里已经写明了,只能是jpeg或者tiff类型,其中jpeg是常用类型,这就已经足够。
我们来看看exif_read_data()函数的使用手册
array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )
参数:
filename :要读取图片exif信息的图片路径,这里不能是URL
sections:是需要存在于文件中的逗号分隔的区段列表用来产生结果数组。如果未找到所请求的区段则返回值为 FALSE。
FILE |
FileName, FileSize, FileDateTime, SectionsFound |
COMPUTED |
html,Width,Height,IsColor,可能有更多其它的。Height 和 Width 是用和 getimagesize() 一样的方法计算的,因此它们的值不能是任何返回的头信息的部分。此外 html 是一个 height/width 的文本字符串可以用于普通的
如果提示:
从Exif信息读取结果中取出有用的信息
从以上的执行结果我们发现图片Exif很多,我们只需要从中过滤掉垃圾信息剩下有用的就好。本例就以常用的参数为前提写一个PHP函数。常用的参数包括快门,器材名称,光圈,感光度,焦距:
读取照片
其它说明
图片的Exif值是可以通过相应工具修改的,所以使用程序读取图片的Exif值只能用做参考,不做真实依据。
感兴趣的朋友也可以访问在线读取Exif信息网站http://exif.cn玩玩
通过PHP模块读取的Exif信息偶尔会错,或者信息不全,这种情况下,我们可以通过第三方工具。然后利用php执行系统linux命令读取
这篇文章主要介绍了PHP中读取文件的8种方法和代码实例,本文总结了PHP中读取文件的8个函数,每一个都附有使用例子及注意事项等,需要的朋友可以参考下...
下面小编就为大家带来一篇php htmlentities()函数的定义和用法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...
这篇文章主要介绍了PHP变量的定义、可变变量、变量引用、销毁方法,需要的朋友可以参考下
...
php学习之数据类型之间的转换介绍,学习php的朋友可以参考下。
...
这篇文章主要介绍了php实现的支持imagemagick及gd库两种处理的缩略图生成类,包含了用法的详细描述,非常实用,需要的朋友可以参考下...
只要一个变量,需要在多个方法使用,就将这个变量声明为成员属性,可以直接在这个对象中的所有方法中使用 成员属性,相当于这个对象中的全局变量...
这篇文章主要介绍了PHP常量DIRECTORY_SEPARATOR原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...
这篇文章主要介绍了PHP全角半角转换函数,把目前能找到的所有全角都列出来了一个个替换吧,需要的朋友可以参考下
...
|