PHP Classes

File: test/example.php

Recommend this page to a friend!
  Classes of Claude Diderich   PHP JPEG metadata   test/example.php   Download  
File: test/example.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP JPEG metadata
Read and write metadata stored in JPEG image files
Author: By
Last change:
Date: 2 years ago
Size: 5,271 bytes
 

Contents

Class file image Download
<?php
 
/**
   * example.php - Image file metadata handing exampe file
   *
   * @project Holiday\Metadata
   * @version 1.1
   * @author Claude Diderich (cdiderich@cdsp.photo)
   * @copyright (c) 2022 by Claude Diderich
   * @license https://opensource.org/licenses/mit MIT
   */

/** Set error handling */
error_reporting(E_ALL);
ini_set('log_errors', false);
ini_set('display_errors', true);

/**
 * Automatically load classes
 *
 * @param string $name Name of class to load
 */
function my__autoload(string $name): void
{
 
$name = str_replace("\\", '/', str_replace("Holiday\\", '', $name));
  if(
file_exists("../src/$name.php")) require_once("../src/$name.php");
}
spl_autoload_register('my__autoload');


/*** EXAMPLE ***/
$testfiles_ary = array('img.example.jpg', 'img.mlexample.jpg');

/**
 * Use of class Metadata
 */
$metadata = new \Holiday\Metadata();

foreach(
$testfiles_ary as $filename) {
  echo
"PROCESSING EXAMPLE IMAGE USING \\Holiday\\Metadata CLASS: $filename".PHP_EOL;
  echo
"---".PHP_EOL;

 
// Read metadata in a transparent way not extend tagged keywords
 
$metadata->read($filename, extend: false);


 
// Read some of the metadata (assuming metadata is available)
 
$caption = $metadata->get(\Holiday\Metadata::CAPTION, lang: \Holiday\Metadata::LANG_DEFAULT);
 
$caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, lang: \Holiday\Metadata::LANG_ALL);
 
$date_created = $metadata->get(\Holiday\Metadata::CREATED_DATETIME);
 
$credit = $metadata->get(\Holiday\Metadata::CREDIT);
 
$city = $metadata->get(\Holiday\Metadata::CITY);
 
$country = $metadata->get(\Holiday\Metadata::COUNTRY);
 
$keywords = $metadata->get(\Holiday\Metadata::KEYWORDS);
 
$people = $metadata->get(\Holiday\Metadata::PEOPLE);
 
$event = $metadata->get(\Holiday\Metadata::EVENT);
  if(!empty(
$caption_ary)) {
    echo
"CAPTION:".PHP_EOL;
    foreach(
$caption_ary as $lang => $text) {
     
$lang = substr($lang.' ', 0, 9);
      echo
" $lang: $text".PHP_EOL;
    }
  }
  if(
$credit !== false) echo "CREDIT : $credit".PHP_EOL;
  if(
$city !== false && $country !== false) echo "PLACE : $city, $country".PHP_EOL;
  if(
$date_created !== false) echo "CREATED : ".date('d.m.Y', $date_created).PHP_EOL;
  if(
$event !== false) echo "EVENT : $event".PHP_EOL;
  if(
$keywords !== false) echo "KEYWORDS : ".implode(', ', $keywords).PHP_EOL;
  if(
$people !== false) echo "PEOPLE : ".implode(', ', $people).PHP_EOL;
  echo
PHP_EOL;

 
// Read metadata in a transparent way and extend tagged keywords to their respective fields
 
$metadata->read($filename, extend: true);
  echo
"EXTENDING KEYWORD TAGS:".PHP_EOL;
 
$keywords = $metadata->get(\Holiday\Metadata::KEYWORDS);
 
$people = $metadata->get(\Holiday\Metadata::PEOPLE);
  if(
$keywords !== false) echo "KEYWORDS : ".implode(', ', $keywords).PHP_EOL;
  if(
$people !== false) echo "PEOPLE : ".implode(', ', $people).PHP_EOL;
  echo
PHP_EOL;

 
// Re-format caption and update information
 
if($caption !== false && $date_created !== false && $city !== false && $country !== false && $credit !== false) {
   
$caption = strtoupper($city).', '.strtoupper($country).' - '.strtoupper(date('F d', $date_created)).': '.
     
$caption.' (Photo by '.$credit.')';
   
$metadata->set(\Holiday\Metadata::CAPTION, $caption, lang: \Holiday\Metadata::LANG_DEFAULT);
  }
  else {
    echo
"NOT ALL INFORMATION AVAILABLE TO UPDATE CAPTION".PHP_EOL;
  }
  if(
$event !== false) {
   
$metadata->set(\Holiday\Metadata::EVENT, strtoupper($event));
  }
  else {
   
$metadata->set(\Holiday\Metadata::EVENT, 'Event was empty');
  }

 
// Write metadata back to the image file
 
$metadata->write("new.$filename");

 
// Read-back the data and display modified caption
 
$metadata->read("new.$filename");
 
$caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, \Holiday\Metadata::LANG_ALL);
  if(!empty(
$caption_ary)) {
    echo
"NEW CAPTION:".PHP_EOL;
    foreach(
$caption_ary as $lang => $text) {
     
$lang = substr($lang.' ', 0, 9);
      echo
" $lang: $text".PHP_EOL;
    }
  }
  echo
"NEW EVENT : ".$metadata->get(\Holiday\Metadata::EVENT).PHP_EOL.PHP_EOL;

 
// Paste original data to new file
 
$metadata->read("$filename");
 
$metadata->paste("new.$filename");

   
// Read-back the data and display original caption
 
$metadata->read("new.$filename");
 
$caption_ary = $metadata->get(\Holiday\Metadata::CAPTION, \Holiday\Metadata::LANG_ALL);
  if(!empty(
$caption_ary)) {
    echo
"PASTED CAPTION:".PHP_EOL;
    foreach(
$caption_ary as $lang => $text) {
     
$lang = substr($lang.' ', 0, 9);
      echo
" $lang: $text".PHP_EOL;
    }
  }
  echo
"PASTED EVENT: ".$metadata->get(\Holiday\Metadata::EVENT).PHP_EOL.PHP_EOL;
}

/**
 * Use of exception handling class \Holiday\Metadata\Exception
 */
echo PHP_EOL;
try {
 
$metadata->read('invalid.file.name.jpg');
  echo
"FILE WAS SUCCESSFULLY READ ALTHOUGH IT SHOULD NOT EXIST".PHP_EOL;
}
catch(\
Holiday\Metadata\Exception $exception) {
  echo
"EXCEPTION CATCHED".PHP_EOL;
  echo
"---".PHP_EOL;
  echo
"CODE: ".$exception->getCode().PHP_EOL;
  echo
"MESSAGE: ".$exception->getMessage().PHP_EOL;
  echo
"DATA: ".$exception->getData().PHP_EOL;
}

/***
 * Cleanup images created
 */
foreach($testfiles_ary as $filename) {
 
unlink("new.$filename");
}
?>