joserick / png-metadata
一个用于从PNG格式图像中提取元数据(XMP,EXIF)的PHP库。
v0.2.8
2022-12-14 17:14 UTC
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-09-15 01:16:55 UTC
README
PNGMetadata 是一个库,能够提取PNG格式图像的元数据。
需要注意的是,PNGMetadata 不 使用 ExifTool 软件,因此它是完全本地的。
喜欢这个包吗? 
需求
- PHP >= 7.4
- XML PHP 扩展
- JSON PHP 扩展
- GD PHP 扩展
- EXIF PHP 扩展
安装
使用包管理器 Composer 安装 PNGMetadata。
$ composer require joserick/png-metadata
使用
获取 PNGMetadata 实例
// 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'
如果您不想看到任何 错误(异常)被生成,您可以使用静态函数 'extract()',在错误情况下它将返回 'false'。
$png_metadata = PNGMetadata::extract('Photo.png'); // return a 'ArrayObject' or 'False'
如果您想要使用简单的数组而不调用其他函数,您可以调用 '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'
示例
示例 1 - 所有
打印所有元数据。
$png_metadata = new PNGMetadata('../Photo.png'); echo $png_metadata; // Print metadata in 2 colums.
输出
示例 2 - 获取元数据
获取特定元数据。
$png_metadata = new PNGMetadata(___DIR___.'/Photo.png'); echo $png_metadata->get('exif:DateTime'); // Return a value, a array or false.
示例 3 - 类型
打印元数据类型(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 }
额外函数
获取存储在元数据中的缩略图!
$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); }
是PNG吗?
if (PNGMetadata::isPNG('./Photo_jpg.png')){ echo 'Yes, it is a PNG.'; }else{ echo 'No, it is not a PNG.' }
类型是什么?
return PNGMetadata::getType('./Photo') == 1 // GIF?
许可协议
GNU公共许可证(GPLv3)。请参阅 许可文件 获取更多信息。