广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >利用PHP读取到图片的EXIF信息的方法是什么
  • 918
分享到

利用PHP读取到图片的EXIF信息的方法是什么

2023-06-25 11:06:37 918人浏览 薄情痞子
摘要

这篇文章主要讲解了“利用PHP读取到图片的EXIF信息的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“利用php读取到图片的EXIF信息的方法是什么”吧!在我们拍的照片以及各类图像

这篇文章主要讲解了“利用PHP读取到图片的EXIF信息的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“利用php读取到图片的EXIF信息的方法是什么”吧!

利用PHP读取到图片的EXIF信息的方法是什么

在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型、大小等,这些信息就称为 EXIF 信息。一般 JPG 、 TIFF 这类的图片文件都会有这样的信息。EXIF 其实就是专门为这种数码照片所定制的,专门用于记录数码照片的属性信息和拍摄数据的,最初由日本制定。这个其实很好理解,日本对相机行业基本是垄断般的存在,所以这类的标准当然就是由他们制定啦!

EXIF 在 windows 系统中具有原生的支持,鼠标右键点击图片打开菜单,然后点击属性并切换到详细信息就可以直接看到图片文件的 EXIF 信息了。由于这些信息是可以被随意编辑的,所以它们可以作为一些参考,并不能作为某些功能属性的确定值来获取,比如宽高这些信息就不要完全相信 EXIF 中的。

获取 EXIF 中的图片类型信息

首先,我们看下通过 EXIF 来查看图片的类型。

var_dump(exif_imagetype($png)); // int(3)echo exif_imagetype($png) == IMAGETYPE_PNG ? $png . '是 PNG 图片' : $png . '不是 PNG 图片', PHP_EOL;// ../img/1.png是 PNG 图片var_dump(exif_imagetype($jpg)); // int(2)echo exif_imagetype($jpg) == IMAGETYPE_JPEG ? $jpg . '是 jpg 图片' : $jpg . '不是 JPG 图片', PHP_EOL;// ../img/2.jpg是 jpg 图片

直接使用 exif_imagetype() 函数就会返回一个图片类型的常量,也就是以 IMAGETYPE_ 开头的常量信息所代表的图片类型。它还包括其它很多类型,这里只是演示了我们平常最常见的 jpg 和 png 类型的图片类型的获取。

它和 getimagesize() 函数返回的第三个属性,也就是下标为 2 的那个属性的内容是一样的,在 getimagesize() 函数中,0 和 1 代表的是宽高,2 代表的就是图片的类型。

var_dump(getimagesize($jpg));// array(7) {//     [0]=>//     int(300)//     [1]=>//     int(244)//     [2]=>//     int(2)//     [3]=>//     string(24) "width="300" height="244""//     ["bits"]=>//     int(8)//     ["channels"]=>//     int(3)//     ["mime"]=>//     string(10) "image/jpeg"//   }

获取完整的 EXIF 信息

图片中完整的所有 EXIF 信息是通过 exif_read_data() 函数来获取的。

var_dump(exif_read_data($png));// PHP Warning:  exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 14// Warning: exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 14// bool(false)var_dump(exif_read_data($jpg));// array(8) {//     ["FileName"]=>//     string(5) "2.jpg"//     ["FileDateTime"]=>//     int(1605061174)//     ["FileSize"]=>//     int(19075)//     ["FileType"]=>//     int(2)// ……// ……

就像前面讲过的,EXIF 信息只在 JPG 、 TIFF 等类型的图片格式中存在,所以 PNG 图片是无法获取到 EXIF 信息的。如果对 PNG 图片使用 exif_read_data() 就会报出警告。而对于 JPG 来说,就会返回完整的全部的 EXIF 内容。这里我们只截取了一部分,本身的内容非常多,不只是宽、高、类型、压缩比率之类的,如果是手机拍摄的还能看到手机厂商、地理位置、快门参数、光圈参数等,当然,这个也和你使用的相机有很大的关系,有的厂家可能就会少一些数据。这个大家可以自己拍张照然后使用这个函数来自己查看一下。

另外,还有一个别名函数 read_exif_data() ,与 exif_read_data() 的功能是类似的,就是它的一个别名,并且在 PHP7 以后就已经标记为过时的语法了。大家可以了解一下。

var_dump(read_exif_data($jpg));// PHP Deprecated:  Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 17// Deprecated: Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 17// array(8) {//   ["FileName"]=>//   string(5) "2.jpg"//   ["FileDateTime"]=>//   int(1605061174)//   ["FileSize"]=>// ……// ……

获取指定索引的头名称

索引头对应的就是 EXIF 中的字段名称,我们可以查看当前所有支持的索引头信息,内容非常多。也可以根据索引头获得属性名称,然后再到 EXIF 中查找对应的属性信息。

echo "256: " . exif_tagname(256) . PHP_EOL;// 256: ImageWidthfor ($id = 1; $id <= 65535; $id++) {    if (exif_tagname($id) != "") {        echo $id . ' ( ' . exif_tagname($id) . ' )', PHP_EOL;    }}// 11 ( ACDComment )// 254 ( NewSubFile )// 255 ( SubFile )// 256 ( ImageWidth )// 257 ( ImageLength )// 258 ( BitsPerSample )// 259 ( Compression )// ……// ……// ……

读取 JPG 文件中嵌入的缩略图

可能很多人不知道吧,EXIF 中是可以保存一个缩略图的。而且大家的手机拍出来的相片基本都会有这个缩略图存在。Windows 系统中如果图片有缩略图的话也会直接用 EXIF 中的缩略图,如果没有的话,就会自动在目录中生成一个 Thumbs.db 文件,也就是一个缩略图的数据库

var_dump(exif_thumbnail('../img/3.jpeg'));file_put_contents('../img/3-thumbnail.jpeg', exif_thumbnail('../img/3.jpeg'));

在 PHP 中可以通过 exif_thumbnail() 这个函数直接获取 JPG 文件中 EXIF 里面保存的缩略图信息。在测试代码中我们获取到后再将它保存为正式的图片,大家就可以看到缩略图的真实样子了。并且我们使用 exif_read_data() 来读取这个文件的话,也能看到缩略图保存的信息。

var_dump(exif_read_data('../img/3.jpeg'));// array(56) {// ……// ……// ……//     ["Make"]=>//     string(6) "Xiaomi"//     ["THUMBNAIL"]=>//     array(9) {//       ["JPEGInterchangeFORMat"]=>//       int(5504)//       ["Orientation"]=>//       int(6)//       ["JPEGInterchangeFormatLength"]=>//       int(14369)//       ["Compression"]=>//       int(6)//       ["ResolutionUnit"]=>//       int(2)//       ["XResolution"]=>//       string(4) "72/1"//       ["YResolution"]=>//       string(4) "72/1"//       ["ExifImageLength"]=>//       int(240)//       ["ExifImageWidth"]=>//       int(320)//     }//     ["UndefinedTag:0x9AAA"]=>//     string(4480) "1y�L�=w%�s_�&��v��oJ��$Gdz|d�9n�// ……// ……

感谢各位的阅读,以上就是“利用PHP读取到图片的EXIF信息的方法是什么”的内容了,经过本文的学习后,相信大家对利用PHP读取到图片的EXIF信息的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 利用PHP读取到图片的EXIF信息的方法是什么

本文链接: https://www.lsjlt.com/news/304301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用PHP读取到图片的EXIF信息的方法是什么
    这篇文章主要讲解了“利用PHP读取到图片的EXIF信息的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“利用PHP读取到图片的EXIF信息的方法是什么”吧!在我们拍的照片以及各类图像...
    99+
    2023-06-25
  • Python读取图片属性信息的实现方法
    本文是利用Python脚本读取图片信息,有几个说明如下: 1、没有实现错误处理 2、没有读取所有信息,大概只有 GPS 信息、图片分辨率、图片像素、设备商、拍摄设备等 3、简单...
    99+
    2022-06-04
    属性 方法 图片
  • java读取图片并显示的方法是什么
    在Java中,可以使用`ImageIO`类来读取图片并显示。以下是一个简单的示例代码: import javax.imageio.I...
    99+
    2023-10-28
    java
  • android读取短信的方法是什么
    Android读取短信的方法可以通过使用 BroadcastReceiver 和 ContentResolver 两种方式来实现。1...
    99+
    2023-08-12
    android
  • .NET二进制图片存储与读取的常见方法是什么
    本篇内容主要讲解“.NET二进制图片存储与读取的常见方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.NET二进制图片存储与读取的常见方法是什么”吧!.NET二进制图片存储与读取的常见方...
    99+
    2023-06-18
  • python提取图片文字的方法是什么
    Python提取图片文字的方法主要有两种:OCR技术和深度学习技术。 OCR(Optical Character Recogni...
    99+
    2023-10-25
    python
  • 利用Java读取Word表格中文本和图片的方法实例
    目录1. 程序环境准备Jar导入步骤及方法:方法1:手动导入。方法2:Maven仓库导入。2. Java代码3. 文本、图片读取效果总结本文通过Java程序来展示如何读取Word表格...
    99+
    2022-11-12
  • php读取文件内容的方法是什么
    PHP有多种方法可以读取文件内容:1. fopen()和fread():先使用fopen()函数打开文件,然后使用fread()函数...
    99+
    2023-10-10
    php
  • c#串口通信数据读取的方法是什么
    在C#中进行串口通信数据读取的方法是使用SerialPort类。 首先,需要创建一个SerialPort对象,并设置好串口的参数,例...
    99+
    2023-10-28
    c#
  • java图片保存到数据库的方法是什么
    Java中将图片保存到数据库的方法有多种,以下是一种常见的方法:1. 将图片转换为字节数组:```javaFile imageFil...
    99+
    2023-09-27
    java
  • 图片上传到云服务器的方法是什么
    图片上传到云服务器的方法有多种,以下是常见的几种方法:1. FTP(文件传输协议):使用FTP客户端软件(如FileZilla)连接...
    99+
    2023-09-16
    云服务器
  • jsp上传图片到文件夹的方法是什么
    在JSP中,可以使用以下步骤将图片上传到文件夹:1. 在JSP页面上,创建一个HTML表单,其中包含一个文件上传字段:```html...
    99+
    2023-08-19
    jsp
  • PHP文件打开/读取/关闭的方法是什么
    在PHP中,要打开、读取和关闭文件,可以使用以下方法:1. 打开文件:- 使用`fopen()`函数打开文件,并返回一个文件指针。语...
    99+
    2023-10-11
    PHP
  • SQLPLUS使用视图查看RMAN备份集信息的方法是什么
    这篇文章主要介绍“SQLPLUS使用视图查看RMAN备份集信息的方法是什么”,在日常操作中,相信很多人在SQLPLUS使用视图查看RMAN备份集信息的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2022-10-18
  • 利用FastReport传递图片参数在报表上展示签名信息的实现方法
    目录1、报表上的设计处理2、报表传递图片数据在一个项目中,客户要求对报表中的签名进行仿手写的签名处理,因此我们原先只是显示相关人员的姓名的地方,需要采用手写方式签名,我们的报表是利用...
    99+
    2022-11-13
    FastReport传递图片参数 FastReport图片报表 FastReport报表
  • php生成的图片不显示的原因和解决方法是什么
    本篇内容介绍了“php生成的图片不显示的原因和解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、文件路径错误在PHP动态生成图...
    99+
    2023-07-05
  • PHP消息队列实现及运用的方法是什么
    这篇文章主要讲解了“PHP消息队列实现及运用的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP消息队列实现及运用的方法是什么”吧!消息队列的概念、原理、实现方式概念队列结构的一...
    99+
    2023-07-04
  • Vue中避免滥用this去读取data中数据的方法是什么
    这篇文章主要讲解了“Vue中避免滥用this去读取data中数据的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中避免滥用this去读取da...
    99+
    2022-10-19
  • 针对PHP对象注入漏洞的新型利用方法是什么
    本篇文章为大家展示了针对PHP对象注入漏洞的新型利用方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言就在前段时间的BlackHat黑客大会上,来自Secarma的安全研究专家Sam Th...
    99+
    2023-06-04
  • html图片标签、绝对路径和相对路径的使用方法是什么
    本篇内容介绍了“html图片标签、绝对路径和相对路径的使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作