php截取字符串网站内容(日本对相机行业基本是垄断般的存在的标准当然就是)

优采云 发布时间: 2022-02-02 12:21

  php截取字符串网站内容(日本对相机行业基本是垄断般的存在的标准当然就是)

  在我们拍摄的照片和各种图像文件中,实际上存储了一些无法直观看到的信息,比如手机拍照时的位置信息、图片的类型和大小等。这个信息称为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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线