meiloucheng/phpexiftool

PHP Exiftool 驱动程序

4.3.2 2022-02-15 09:52 UTC

README

Build Status

该项目是基于 phpexiftool/phpexiftool 的分支。

PHP Exiftool 是 Phil Harvey 的 Exiftool(见 http://www.sno.phy.queensu.ca/~phil/exiftool/)的一个面向对象的驱动程序。Exiftool 是一个强大的用于读取、写入和编辑以 Perl 编写的元信息的库和命令行实用工具。

PHPExiftool 提供了一个直观的面向对象接口来读取和写入元数据。

以下是一些示例。此驱动程序不适用于生产环境,仍在积极开发中。

安装

推荐通过 composer 安装 PHP-Exiftool。

{
    "require": {
        "meiloucheng/phpexiftool": "^4.3.2"
    }
}

用法

Exiftool 读取器

一个简单示例:如何从文件中读取元数据

<?php

require __DIR__ . '/vendor/autoload.php';

use Monolog\Logger;
use PHPExiftool\Reader;
use PHPExiftool\Driver\Value\ValueInterface;

$logger = new Logger('exiftool');
$reader = Reader::create($logger);

$metadataBag = $reader->files(__FILE__)->first();

foreach ($metadataBag as $metadata) {
    if (ValueInterface::TYPE_BINARY === $metadata->getValue()->getType()) {
        echo sprintf("\t--> Field %s has binary data" . PHP_EOL, $metadata->getTag());
    } else {
        echo sprintf("\t--> Field %s has value(s) %s" . PHP_EOL, $metadata->getTag(), $metadata->getValue()->asString());
    }
}

带有目录检查的示例

use Monolog\Logger;
use PHPExiftool\Reader;
use PHPExiftool\Driver\Value\ValueInterface;

$logger = new Logger('exiftool');
$reader = Reader::create($logger);

$reader
  ->in(array('documents', '/Picture'))
  ->extensions(array('doc', 'jpg', 'cr2', 'dng'))
  ->exclude(array('test', 'tmp'))
  ->followSymLinks();

foreach ($reader as $data) {
    echo "found file " . $data->getFile() . PHP_EOL;

    foreach ($data as $metadata) {
        if (ValueInterface::TYPE_BINARY === $metadata->getValue()->getType()) {
            echo sprintf("\t--> Field %s has binary data" . PHP_EOL, $metadata->getTag());
        } else {
            echo sprintf("\t--> Field %s has value(s) %s" . PHP_EOL, $metadata->getTag(), $metadata->getValue()->asString());
        }
    }
}

Exiftool 写入器

<?php

require __DIR__ . '/vendor/autoload.php';

use Monolog\Logger;
use PHPExiftool\Writer;
use PHPExiftool\Driver\Metadata\Metadata;
use PHPExiftool\Driver\Metadata\MetadataBag;
use PHPExiftool\Driver\Tag\IPTC\ObjectName;
use PHPExiftool\Driver\Value\Mono;

$logger = new Logger('exiftool');
$writer = Writer::create($logger);

$bag = new MetadataBag();
$bag->add(new Metadata(new ObjectName(), new Mono('Pretty cool subject')));

$writer->write('image.jpg', $bag);

许可证

项目采用 MIT 许可证授权