📅  最后修改于: 2023-12-03 15:33:34.292000             🧑  作者: Mango
在处理图片时,我们可能需要获取图片的元数据,比如光圈、快门速度、ISO等信息,这些信息可以在图片的Exif数据中找到。PHP提供了一个函数read_exif_data()
用于读取Exif数据。
array read_exif_data ( string $filename , string $sections = null , bool $arrays = false , bool $thumbnail = false )
IFD0
:主图像文件夹(Main Image File Directory)。THUMBNAIL
:缩略图(缩略图是用来快速预览图片的小图)。EXIF
:主Exif数据。COMPUTED
:计算所得的数据,比如相机制造商、模型和拍摄时间等。ANY_TAG
:任何标签,包括IFD0
、THUMBNAIL
、EXIF
和GPS
。IFD1
:辅助图像文件夹(Secondary Image File Directory)。true
,则会将每个标签值视为数组,否则会将它们转换为字符串。默认为false
。true
,则连同缩略图的Exif数据一起返回。默认为false
。如果读取成功,read_exif_data()
函数会返回一个关联数组,包含指定的Exif数据部分和标记。对于每个标记,关联数组的键是标记的名称,值是标记的数值。
$exif = read_exif_data('image.jpg', 'IFD0, EXIF');
上面的代码读取了image.jpg
文件的IFD0
和EXIF
部分的Exif数据,并将结果保存在变量$exif
中。
为了展示该函数的使用,下面以获取图片的拍摄时间为例:
$dateTime = false;
if (!empty($exif['DateTimeOriginal'])) {
$dateTime = $exif['DateTimeOriginal'];
} elseif (!empty($exif['DateTimeDigitized'])) {
$dateTime = $exif['DateTimeDigitized'];
} elseif (!empty($exif['DateTime'])) {
$dateTime = $exif['DateTime'];
}
if ($dateTime) {
echo '拍摄时间:' . $dateTime;
} else {
echo '无法获取拍摄时间。';
}
上面的代码首先检查Exif数据中是否包含DateTimeOriginal
、DateTimeDigitized
或DateTime
标记。如果有,就将其值赋给变量$dateTime
。最后,根据$dateTime
的值输出相应的消息。
PHP的read_exif_data()
函数可以方便地读取图片的Exif数据,并能够精确地获取各种元数据。在实际开发中,可能还需要结合其他函数来处理读取到的数据,比如通过imagecreatefromjpeg()
函数创建图像资源、通过imagecopyresampled()
函数改变图像大小或者为图片加上水印等。