php截取字符串网站内容(日本对相机行业基本是垄断般的存在的标准当然就是)
优采云 发布时间: 2022-02-02 12:21php截取字符串网站内容(日本对相机行业基本是垄断般的存在的标准当然就是)
在我们拍摄的照片和各种图像文件中,实际上存储了一些无法直观看到的信息,比如手机拍照时的位置信息、图片的类型和大小等。这个信息称为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查找对应的属性信息。
<p>echo "256: " . exif_tagname(256) . PHP_EOL;
// 256: ImageWidth
for ($id = 1; $id