php读取图片-如何用PHP读取照片的exif信息

2023-08-25 0 4,447 百度已收录

我们先来了解一下图片的Exif信息是什么。

Exif是一种图像文件格式,其数据存储与JPEG格式完全相同。 其实Exif格式就是将数码照片的信息塞进了JPEG格式的肚子里,包括焦距、快门速度、白平衡、ISO、焦距、日期和时间、相机品牌、型号、色码、录制的声音拍摄期间,全球定位系统(GPS)、缩略图和其他拍摄条件。 简单来说,Exif=JPEG拍摄参数。 因此,您可以使用任何可以查看 JPEG 文件的查看软件来查看 Exif 照片,但并非所有图形程序都可以处理 Exif 信息。

以上引自百度百科。

读取照片的exif信息很多时候是没有必要的,但是读取照片的exif信息比一些讨论摄影技术的网站更重要,比如摄影峰会上的蜂鸟。

截图来自蜂鸟峰会,红圈内的信息是程序读取到的照片的exif信息。 我们将图片下载到本地,用影魔打开图片即可看到其Exif信息。 但是当BG不仅有阴影而且还有很多工具的时候,就可以看到图片的Exif值了。

除了 Exif 信息中的镜头值难以读取之外,所有值均正确读取。

php读取图片-如何用PHP读取照片的exif信息

打开 PHP 模块

PHP中读取图片Exif信息的模块默认是没有打开的,所以我们需要先打开这个模块。

打开Exif模块需要mbstring,所以先安装mbstring。 以下以Linux环境为例,其他环境类似。

安装 mbstring 模块。

首先找到php源码包的位置,直接输入ext/mbstring,执行以下命令进行安装。 具体参数取决于您自己的环境。

复制以下代码: [[email protected]ext]# CD/data 0/software/PHP/ext/mbstring[[email protected]mbstring]#/usr/local/web server/PHP/bin/phpize 配置为: PHP Api 版本:20090626 Zend 模块 Api 编号:20090626 Zend 扩展 API 编号 3:220090626[[emailprotected/config-with-PHP-config=/usr/local/web server/PHP/bin/PHP-config[[email protected]mbstring] ] # make Installing 安装共享扩展 3360/usr/local/web server/PHP/lib/PHP/extensions/no-debug-non-zts-20090626/安装头文件: /usr/local/web server/PHP/include/ PHP /[[电子邮件受保护]mbstring]#

php读取图片-如何用PHP读取照片的exif信息

安装完成后,我们可以进入扩展目录来查看该模块是否存在。 如果存在,则安装成功。 复制的代码如下: [[email protected]mbstring]# CD/usr/local/web server/PHP/lib/PHP/extensions/no-debug-non-zts-20090626/[[email protected]. no-debug-non-zts-20090626]#ll 1880-rwxr-xr-x 。 1 root root 414405 2012 年 6 月 12 日 easeerator 。 so-rwxr-xr-x 。 1 root root 1091242 2011年9月23日 imagik.so-rwxr-xr-x.1 root5285 2.20 15:07 mbstring.so-rwxr-xr-x.1 root root 246752 2011年9月23日 memcache.so-rwxr-xr- x.1 根 根 154252 2011 年 9 月 23 日 pdo_mysql.so

安装 exif 模块。

与安装mbstring模块类似,首先找到源代码位置并cd到它,然后配置安装。 具体参数取决于您自己的环境。 复制代码如下:[[email protected]EXIF]# CD/data 0/software/PHP-5.3.13/ext/EXIF[[email protected]EXIF]#。 /config-with-PHP-config=/usr/local/web server/PHP/bin/PHP-config[[email protected]EXIF]# make install 安装共享扩展 3360/usr/local/web server/PHP/lib/ PHP/extensions/no-debug-non-zts-20090626/[[电子邮件受保护]EXIF]#

进入扩展目录,验证安装是否成功。

代码复制自:[[email protected]EXIF]# CD/usr/local/web server/PHP/lib/PHP/extensions/no-debug-non-zts-20090626/[[email protected]。 no-debug-non-zts-20090626]# ll 2036-rwxr-xr-x 。 1 root 414405 2012 年 6 月 12 日 缓动器 。 so-rwxr-xr-x 。 1 root 158554 二月 20 15336025 EXIF ​​.so -rwxr-xr-x.1 root 10912.2 Sep 23, 2011 imag ick.so-rwxr-xr-x.1 root 5285 Feb 20,2011 15:07 MB string.so -rwxr-xr- x.1 root 246752 2011 年 9 月 23 日 memcache.so-rwxr-xr-x.1 root。 根 23 Sep 154252 PDO_MySQL.so[[email protected]no-debug-non-zts-20090626]#

Exif.so 模块已经存在。

在 php.ini 中添加模块 打开 php.ini 并添加以下两行复制的代码,如下所示: extension=' mbstring 。 所以'扩展名='EXIF​​。 so '并确认您的extension_dir值与一致安装模块时提示的安装共享扩展值相同。 例如,当我安装模块时php读取图片,提示我扩展的位置是复制代码,像这样:/usr/local/web server/PHP/lib/PHP/extensions/no-debug-non-zts -20090626/ 然后php.ini中的extension_dir应该指向正确的目录,并复制代码如下:extension_dir='/usr/local/web server/PHP/lib/PHP/extensions/no-debug 打开phpinfo () 并找到相应的属性,看看是否有效。

正常情况下,你会看到以下两个模块信息。

使用exif_read_data()读取图片的exif信息。

支持读取exif信息的图片类型已经在phpinfo中写好了,只能是jpeg或者tiff类型,其中jpeg是常见的类型php读取图片,就够用了。 让我们看一下 exif_read_data() 函数的用户指南。 复制代码如下:array EXIF_read_data(string$filename[, string$sections=null[, bool $arrays=false[, bool$thumbnail=false]])。

php读取图片-如何用PHP读取照片的exif信息

范围:

文件名:读取图像的exif信息的图像路径,不能是URL部分:它是一个以冒号分隔的部分列表,这些部分需要存在于文件中才能生成结果字段。 如果找不到所请求的部分,则返回值为 false。

文件文件名、文件大小、文件日期时间、找到的部分估计 html、宽度、高度、颜色等。 高度和厚度的估计方式与 getimagesize() 相同,因此它们的值不能成为任何返回的标头信息的一部分。 此外,html 是具有可在普通 HTML 中使用的高度/宽度的文本字符串。 任何包含标签的信息,如IFD0、EXIF、IFD0、IFD0的所有标签数据。 在标准图像文件中,这包括图像大小等。 如果有第二个 IFD,该文件应包含缩略图。 有关嵌入缩略图的所有标签信息都存储在该区域中。 JPEG 图像的带注释的标头信息。 EXIF EXIF部分是国际摄影检查组织的一个分支,包含有关图像的更详细的信息。 大部分内容与数码相机有关。 Array:指定每个部分是否成为一个字段。 COMPUTED、THUMBNAIL 和 COMMENT 部分始终是字段,因为它们包含与其他部分冲突的名称。

缩略图:设置为 true 时,读取缩略图本身。 否则仅读取标签数据。 我们来读取一张图片的exif信息,尝试复制代码代码如下: PHP $EXIF=GetExif('a.jpg'); 回显“前”; 打印_r(EXIF); 回声/前'; 执行结果:复制代码代码如下:Array([FileName]=a .jpg[文件日期时间]=1361340032[文件大小]=69170[文件类型]=2[mime类型]=image/JPEG[sections find] =ANY_TAG、IFD0、THUMBNAIL、EXIF、GPS、INTEROP[COMPUTED]=Array([html]=宽度='600'[高度]=397[宽度]=600[IsColor]=1[字节模式]=1 文件类型]=2[缩略图mime类型]=图像/JPEG)[图像宽度]=4928[图像长度]=3264[比特样本]=Array([0]=8[1]=8[2]=8[光度检测] =2[品牌]=NIKON CORPORATION[型号]=NIKON d 7000[方向]=1[样本像素]=3[X分辨率]=300000000/1000000[分辨率]=30000000000/11100000000 曝光模式]=1[白平衡]=0[数码变焦列]=1/1[焦宽35mm胶片]=27[场景捕捉]=0[增益控制]=2[对比度]=0[饱和度]=0[清晰度]=0[被摄体距离]=0[未定义缩放列:0x a500]=22/10[图形缩放版本]=[互操作索引]=R03[互操作版本]=0100)

如果提示:复制代码 代码如下: Fatal error: Call line 2 /data 0/htdocs/www/EXIF/index.html 服务器端编程语言(专业超文本预处理器的缩写)中未定义的函数exif_read_data()表示该模块未打开。 可能是你的哪部分配置没有配置好,重新配置一下即可。

从Exif信息读取结果中提取有用信息

php读取图片-如何用PHP读取照片的exif信息

从上面的执行结果我们发现图片有很多Exif,我们只需要把垃圾信息过滤掉,留下有用的就可以了。 本示例在常用参数的前提下,编写了一个服务器端编程语言(专业超文本预处理器的简写)函数。 常用的参数有快门、设备名称、光圈、感光度、焦距:

复制代码代码如下: php/***读取联合摄影专家组图片的Exif信息* $img为图片路径**琼台博客*/function getExif($img){ $EXIF=EXIF_read _ 数据($img, 'ifd 0'); return linked list(""FileName=$exif['FileName'], '设备品牌=$exif['Make'], '设备=$exif['Model'], '快门= $EXIF['exposer etime'] , '光圈=$EXIF['fnnumber'], '焦距=$exif['FocalLength'], '灵敏度=$EXIF['isopeedrations']); }

阅读照片

复制代码如下: PHP $Exifinfo=GetExif('a.jpg'); 回显“前”; print_r($Exifinfo); 回显'/ pre'; 执行结果:复制代码如下: array([文件名]= 25556306.jpg[设备品牌]=Nikon Corporation[设备]=Nikon D 3100[快门]=10/32000[光圈]=18/10[焦距] =350/10[灵敏度]=100)。

其他说明

图片的Exif值可以通过相应的工具进行更改,因此程序读取到的图片的Exif值只能作为参考,不能作为真正的依据。

有兴趣的同学还可以访问一个网站,在线阅读Exif信息。

有时 PHP 模块读取的 Exif 信息不正确或不完整。 在这些情况下,我们可能会使用第三方工具。 然后使用php执行系统linux命令进行读取。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php读取图片-如何用PHP读取照片的exif信息 https://www.wkzy.net/game/150230.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务