joserick/png-metadata

一个用于从PNG格式图像中提取元数据(XMP,EXIF)的PHP库。

v0.2.8 2022-12-14 17:14 UTC

This package is auto-updated.

Last update: 2024-09-15 01:16:55 UTC


README

PNGMetadata 是一个库,能够提取PNG格式图像的元数据。

需要注意的是,PNGMetadata 使用 ExifTool 软件,因此它是完全本地的。

PNGMetadata.gif

喜欢这个包吗? "Buy Me A Coffee"

需求

  • 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)。请参阅 许可文件 获取更多信息。