2017 © Pedro Peláez
 

library phpexiftool

Exiftool driver for PHP

image

alchemy/phpexiftool

Exiftool driver for PHP

  • Tuesday, April 24, 2018
  • by bburnichon
  • Repository
  • 9 Watchers
  • 6 Stars
  • 47,238 Installations
  • PHP
  • 6 Dependents
  • 2 Suggesters
  • 7 Forks
  • 0 Open issues
  • 16 Versions
  • 6 % Grown

The README.md

PHP-Exiftool

Build Status, (*1)

This project is a fork of phpexiftool/phpexiftool., (*2)

PHP Exiftool is an Object Oriented driver for Phil Harvey's Exiftool (see http://www.sno.phy.queensu.ca/~phil/exiftool/). Exiftool is a powerful library and command line utility for reading, writing and editing meta information written in Perl., (*3)

PHPExiftool provides an intuitive object oriented interface to read and write metadata., (*4)

You will find some example below. This driver is not suitable for production, it is still under heavy development., (*5)

Installation

The recommended way to install PHP-Exiftool is through composer., (*6)

{
    "require": {
        "alchemy/phpexiftool": "^0.5.0"
    }
}

Usage

Exiftool Reader

A simple example : how to read metadata from a file:, (*7)

<?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());
    }
}

An example with directory inspection :, (*8)

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 Writer

<?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);

License

Project licensed under the MIT License, (*9)

The Versions