frameright/image-metadata-parser

图像元数据解析库

1.1.2 2024-04-12 08:50 UTC

This package is auto-updated.

Last update: 2024-09-23 17:02:50 UTC


README

Packagist Version

图像元数据解析库(PHP 5.5+)

➡️ 查看此文档在 docs.frameright.io/php 的渲染效果

注意:此库基于 dchesterton/image 开发。感谢 dchesterton

支持的图像类型

  • JPEG
  • PNG
  • WEBP

支持的图像元数据类型

  • XMP
  • IPTC
  • EXIF

注意:此库的 TypeScript 等价库可在此处找到 here

安装

使用以下 composer.json 将库拉入您的项目中,通过 Composer

{
  "minimum-stability": "dev",
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/Frameright/php-image-metadata-parser.git"
    }
  ],
  "require": {
    "frameright/image-metadata-parser": "dev-master"
  }
}

依赖: php-xml

用法

入门指南

🔧 贡献

📝 教程

📝 变更日志

获取元数据

$image = Image::fromFile($filename);

$headline = $image->getXmp()->getHeadline();
$camera = $image->getExif()->getCamera();
...

加载特定图像类型

当已知文件类型时,您可以直接使用文件类型的 fromFile 方法加载文件类型。

$jpeg = JPEG::fromFile('image.jpg');
$png = PNG::fromFile('image.png');

从字节实例化

如果您没有文件可用,但您有图像存储在字符串中(来自数据库、ImageMagick 等),您可以从字符串中轻松实例化一个对象。

$data = ...

$jpeg = JPEG::fromString($data);

从 GD 或流实例化

您还可以从 GD 资源或流创建一个对象。

$gd = imagecreate(100, 100);
$jpeg = JPEG::fromResource($gd);
$stream = fopen('...', 'r+');
$jpeg = JPEG::fromStream($stream);

聚合元数据

当只想获取一些元数据而不关心它来自 XMP、IPTC 或 EXIF 时,您可以使用聚合元数据对象。

$image = Image::fromFile($filename);
$headline = $image->getAggregate()->getHeadline();

默认情况下,它首先检查 XMP,然后是 IPTC,然后是 EXIF,但您可以更改优先级

$aggregate = $image->getAggregate();
$aggregate->setPriority(['exif', 'iptc', 'xmp']);

$aggregate->getHeadline(); // will now check EXIF first, then IPTC, then XMP

您还可以排除不希望使用的元数据类型

$aggregate->setPriority(['iptc', 'xmp']);
$aggregate->getHeadline(); // will only check IPTC and XMP

获取 GPS 数据

$image = ...
$gps = $image->getAggregateMeta()->getGPS(); // checks EXIF and XMP
// or $gps = $image->getExif()->getGPS();

$lat = $gps->getLatitude();