使用php获取png格式图像的元数据
我可以使用exif标签获取jpeg或tiff格式图像的元数据。但是我应该如何获取png元数据呢 示例:获取exif标记的代码:使用php获取png格式图像的元数据,php,png,metadata,exif,Php,Png,Metadata,Exif,我可以使用exif标签获取jpeg或tiff格式图像的元数据。但是我应该如何获取png元数据呢 示例:获取exif标记的代码: <?php $image = "NATU.png"; $exif = exif_read_data($image, 0, true); foreach ($exif as $key => $section) { foreach ($section as $name => $val) { echo "$key.$
<?php
$image = "NATU.png";
$exif = exif_read_data($image, 0, true);
foreach ($exif as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val <br>";
}
}
?>
PNG文件格式定义将PNG文档拆分为多个数据块。因此,你必须找到你想要的区块 假设您有一个良好的PNG格式:
<?php
$fp = fopen('18201010338AM16390621000846.png', 'rb');
$sig = fread($fp, 8);
if ($sig != "\x89PNG\x0d\x0a\x1a\x0a")
{
print "Not a PNG image";
fclose($fp);
die();
}
while (!feof($fp))
{
$data = unpack('Nlength/a4type', fread($fp, 8));
if ($data['type'] == 'IEND') break;
if ($data['type'] == 'tEXt')
{
list($key, $val) = explode("\0", fread($fp, $data['length']));
echo "<h1>$key</h1>";
echo nl2br($val);
fseek($fp, 4, SEEK_CUR);
}
else
{
fseek($fp, $data['length'] + 4, SEEK_CUR);
}
}
fclose($fp);
?>
PNG文件格式定义将PNG文档拆分为多个数据块。因此,你必须找到你想要的区块 假设您有一个良好的PNG格式:
<?php
$fp = fopen('18201010338AM16390621000846.png', 'rb');
$sig = fread($fp, 8);
if ($sig != "\x89PNG\x0d\x0a\x1a\x0a")
{
print "Not a PNG image";
fclose($fp);
die();
}
while (!feof($fp))
{
$data = unpack('Nlength/a4type', fread($fp, 8));
if ($data['type'] == 'IEND') break;
if ($data['type'] == 'tEXt')
{
list($key, $val) = explode("\0", fread($fp, $data['length']));
echo "<h1>$key</h1>";
echo nl2br($val);
fseek($fp, 4, SEEK_CUR);
}
else
{
fseek($fp, $data['length'] + 4, SEEK_CUR);
}
}
fclose($fp);
?>
请注意,这将只提供“文本”块中的文本,PNG中还有其他两种文本块类型。请注意,这将只提供“文本”块中的文本,PNG中还有其他两种文本块类型。此库从PNG中提取元数据(Exif、XMP、GPS…),我希望这有帮助:)此库提取元数据(Exif、XMP、GPS…)来自png,我希望这有帮助:)