alchemy / phpexiftool
PHP 的 Exiftool 驱动程序
4.1.1
2024-05-16 07:52 UTC
Requires
- php: ^7.4 || ^8.2
- ext-dom: *
- ext-json: *
- cache/array-adapter: ^1.2
- doctrine/cache: ^1.0
- doctrine/collections: ^1.0
- exiftool/exiftool: *
- symfony/console: ^5 || ^6.2
- symfony/css-selector: ^5 || ^6.2
- symfony/dom-crawler: ^5 || ^6.2
- symfony/monolog-bridge: ^5.4 || ^6.2
- symfony/process: ^5 || ^6
Requires (Dev)
- jms/serializer: ~3
- phpunit/phpunit: ^9.6.7
- symfony/finder: ^5
- symfony/yaml: ^5 || ^6
Suggests
- jms/serializer: To serialize tags
- symfony/yaml: To serialize tags in Yaml format
- 4.x-dev
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 3.1.x-dev
- 3.1.2
- 3.1.1
- 3.0.x-dev
- 3.0.1
- 3.0.0
- 2.2.x-dev
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.x-dev
- 2.1.2
- 2.0.x-dev
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- dev-master / 0.5.x-dev
- 0.5.1
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-PS-578_dictionary-save-client-side
- dev-SILEX2
- dev-feature/improve-error
- dev-0.4.1-mwg-metadata-copy
This package is auto-updated.
Last update: 2024-09-16 08:44:56 UTC
README
该项目是 phpexiftool/phpexiftool 的分支。
PHP Exiftool 是 Phil Harvey 的 Exiftool(见 http://www.sno.phy.queensu.ca/~phil/exiftool/)的一个面向对象的驱动程序。Exiftool 是一个用于读取、写入和编辑以 Perl 编写的元信息的强大库和命令行实用程序。
PHPExiftool 提供了一个直观的面向对象接口来读取和写入元数据。
以下是一些示例。此驱动程序不适用于生产环境,仍在积极开发中。
安装
安装 PHP-Exiftool 的推荐方式是通过 composer。
{ "require": { "alchemy/phpexiftool": "^4.0" } }
用法
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->getTagGroup()); } else { echo sprintf("\t--> Field %s has value(s) %s" . PHP_EOL, $metadata->getTagGroup(), $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->getTagGroup()); } else { echo sprintf("\t--> Field %s has value(s) %s" . PHP_EOL, $metadata->getTagGroup(), $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 许可证授权