joserick / png-metadata
A PHP library for extract the metadata (XMP, EXIF) within a PNG format image.
Installs: 11 436
Dependents: 0
Suggesters: 0
Security: 0
Stars: 19
Watchers: 4
Forks: 3
Open Issues: 1
Requires
- php: ^7.4 || ^8.0
- ext-exif: *
- ext-gd: *
Requires (Dev)
- phpstan/phpstan: ^0.12.74
- phpstan/phpstan-nette: ^0.12.14
- roave/security-advisories: dev-master
- spaze/phpstan-disallowed-calls: ^1.1
- tracy/tracy: ^2.7
This package is auto-updated.
Last update: 2024-10-15 01:28:50 UTC
README
PNGMetadata is a library which is able to extract the metadata of an image in png format.
It is important to mention that PNGMetadata does not use the software ExifTool so it is completely native.
Enjoying this package?
Requirements
- PHP >= 7.4
- XML PHP Extension
- JSON PHP Extension
- GD PHP Extension
- EXIF PHP Extension
Installation
Use the package manager Composer to install PNGMetadata.
$ composer require joserick/png-metadata
Use
Getting a PNGMetadata Instance
// include composer autoload require 'vendor/autoload.php'; // import the Joserick PNGMetadata use PNGMetadata\PNGMetadata; // build PNGMetadata object with a image path. $png_metadata = new PNGMetadata('Photo.png'); // return a 'ArrayObject' or 'Exception'
In case you don't want to see any errors (Exception) generated you can used the static function 'extract()' which returns a 'false' in case of error.
$png_metadata = PNGMetadata::extract('Photo.png'); // return a 'ArrayObject' or 'False'
If you want work with simple array without any other function you can call to 'toArray()'.
$png_metadata = new PNGMetadata('Photo.png'); $metadata_array = $png_metadata->toArray(); // return simple 'Array' //or $metadata_array = PNGMetadata::extract('Photo.png')->toArray(); // return simple 'Array'
Examples
Example 1 - All
Print all the metadata.
$png_metadata = new PNGMetadata('../Photo.png'); echo $png_metadata; // Print metadata in 2 colums.
Out:
Example 2 - Get Metadata
Get specific metadata.
$png_metadata = new PNGMetadata(___DIR___.'/Photo.png'); echo $png_metadata->get('exif:DateTime'); // Return a value, a array or false.
Example 3 - Types
Print the metadata types (IHDR, sRGB, BKGD, EXIF, XMP, CRS, DATE, DC, ICC, AUX, ...).
$png_metadata = new PNGMetadata('./Path/Photo.png'); // or $png_metadata = PNGMetadata::extract('./Path/Photo.png'); foreach($png_metadata as $key => $value){ echo $key . "<br>"; // Metadata types }
Extras Functions
Get the thumbnail stored in the metadata!
$png_metadata = new PNGMetadata('../Photo.png'); // or $png_metadata = PNGMetadata::extract('../Photo.png'); $thumb = $png_metadata->getThumbnail(); if ($thumb !== false) { header('Content-Type: image/png'); imagepng($thumb); imagedestroy($thumb); }
Is PNG?
if (PNGMetadata::isPNG('./Photo_jpg.png')){ echo 'Yes, it is a PNG.'; }else{ echo 'No, it is not a PNG.' }
What type?
return PNGMetadata::getType('./Photo') == 1 // GIF?
License
The GNU Public License (GPLv3). Please see License File for more information.