- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在读取某些图像的 IPTC 数据时遇到了一些麻烦,我之所以要这样做,是因为我的客户在 IPTC 数据中已经有了所有关键字,并且不想在地点。
所以我创建了这个简单的脚本来读出它们:
$size = getimagesize($image, $info);
if(isset($info['APP13'])) {
$iptc = iptcparse($info['APP13']);
print '<pre>';
var_dump($iptc['2#025']);
print '</pre>';
}
Notice: Undefined index: 2#025
最佳答案
我发现 IPTC 几乎总是使用 XMP 格式嵌入为 xml,并且通常不在 APP13 插槽中。您有时可以使用 iptcparse($info['APP1'])
获取 IPTC 信息。 ,但是在没有第三方库的情况下获得它的最可靠方法是简单地从相关的 xml 字符串中搜索图像文件(我从另一个答案中得到了这个,但我一直无法找到它,否则我会链接!):
关键字的 xml 格式始终为 "<dc:subject>...<rdf:Seq><rdf:li>Keyword 1</rdf:li><rdf:li>Keyword 2</rdf:li>...<rdf:li>Keyword N</rdf:li></rdf:Seq>...</dc:subject>"
因此,您可以使用 file_get_contents(get_attached_file($attachment_id))
将文件作为字符串获取, 使用 strpos()
找到每个开始( <rdf:li>
)和结束( </rdf:li>
)XML 标记,并使用 substr()
获取它们之间的关键字.
以下代码段适用于我测试过的所有 jpeg。它将填充数组 $keys
带有从 wordpress 图像中提取的 IPTC 标签,ID $attachment_id
:
$content = file_get_contents(get_attached_file($attachment_id));
// Look for xmp data: xml tag "dc:subject" is where keywords are stored
$xmp_data_start = strpos($content, '<dc:subject>') + 12;
// Only proceed if able to find dc:subject tag
if ($xmp_data_start != FALSE) {
$xmp_data_end = strpos($content, '</dc:subject>');
$xmp_data_length = $xmp_data_end - $xmp_data_start;
$xmp_data = substr($content, $xmp_data_start, $xmp_data_length);
// Look for tag "rdf:Seq" where individual keywords are listed
$key_data_start = strpos($xmp_data, '<rdf:Seq>') + 9;
// Only proceed if able to find rdf:Seq tag
if ($key_data_start != FALSE) {
$key_data_end = strpos($xmp_data, '</rdf:Seq>');
$key_data_length = $key_data_end - $key_data_start;
$key_data = substr($xmp_data, $key_data_start, $key_data_length);
// $ctr will track position of each <rdf:li> tag, starting with first
$ctr = strpos($key_data, '<rdf:li>');
// Initialize empty array to store keywords
$keys = Array();
// While loop stores each keyword and searches for next xml keyword tag
while($ctr != FALSE && $ctr < $key_data_length) {
// Skip past the tag to get the keyword itself
$key_begin = $ctr + 8;
// Keyword ends where closing tag begins
$key_end = strpos($key_data, '</rdf:li>', $key_begin);
// Make sure keyword has a closing tag
if ($key_end == FALSE) break;
// Make sure keyword is not too long (not sure what WP can handle)
$key_length = $key_end - $key_begin;
$key_length = (100 < $key_length ? 100 : $key_length);
// Add keyword to keyword array
array_push($keys, substr($key_data, $key_begin, $key_length));
// Find next keyword open tag
$ctr = strpos($key_data, '<rdf:li>', $key_end);
}
}
}
关于image - 读取图像 IPTC 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778505/
我已经编写了一个相当广泛的管理图像的脚本。 PHP 图像库默认剥离元数据。所以嵌入的数据(如关键字、描述、作者等)都消失了。我已经写了一个相当广泛的图像管理系统,但遗憾的是 IPTC 管理仍然缺乏很多
我在读取某些图像的 IPTC 数据时遇到了一些麻烦,我之所以要这样做,是因为我的客户在 IPTC 数据中已经有了所有关键字,并且不想在地点。 所以我创建了这个简单的脚本来读出它们: $size = g
我正在开发一个图像处理器脚本来基本上调整图像的大小。问题是当我制作图像的调整大小副本时,它也不会复制 IPTC 数据。所以我一直在检查 IPTC PHP 函数(iptcparse 和 iptcembe
许多上传到 Facebook 的图片包含 IPTC/IIM 字段,这些字段显然是在上传过程中自动添加的: 特殊指令,以“FBMD”开头的字符串 原始传输引用。 例如,查看上传到 Facebook 并使
试图找到一种从图像文件缓冲区中提取 IPTC 数据的方法,npm 上现有的库允许您从本地文件系统打开和读取文件,但我将文件存储在 AWS S3 上并且更愿意使用缓冲区而不是创建不必要的磁盘写入。 不确
我需要获取一个现有的 jpg 文件并修改其 IPTC 条目中的标题、描述和关键字。这里有几个主题,但都没有答案或部分答案。我已经知道如何阅读 IPTC 信息,但需要编辑它们。有人可以阐明这个研究较多但
我需要从服务器上上传的文件中获取元数据,尤其是 iptc 元数据。 我找到了两个可以导入的包,但它们都需要“libiptcdata”库。这应该不是问题,但是在我用 brew 安装了 libary 之后
我有兴趣在字节级别手动将 IPTC 字段注入(inject) JPG 文件。 JPEG 文件具有多个带有可观大小标记的元数据段。 IPTC 的分段容器是: 应用13 - 以 FF ED XX XX .
我需要知道如何检查给定的 jpeg 图像中是否包含 iptc 内容?这应该用 java 来完成。因为我是这项技术的新手。有人可以帮忙解决这个问题。 最佳答案 你可以使用这个库, http://read
我试图将关键字添加到 JPG 文件中的 IPTC 数据,但失败得很惨。我可以使用 iptcinfo3 库读取关键字,并且似乎可以将关键字附加到当前关键字列表中,但是当我尝试将这些关键字写回 JPG 文
我正在编写一个需要处理超过 15000 张照片的应用程序,我想将它们的 EXIF 和 IPTC 属性存储到数据库中。 我最初的方法是使用 MySQL 并创建一个表来存储所有属性,正如建议的那样here
我正在尝试使用 iptcembed() 将 IPTC 数据嵌入到 JPEG 图像中但我遇到了一些麻烦。 我已经验证它在最终产品中: // Embed the IPTC data $content =
我无法找到任何有关如何从 Cocoa 中的图像读取 EXIF/IPTC 信息的最新示例。有什么可以轻松完成的事情,或者我应该使用外部工具如 exiftool 并使用 NSTask 启动它? 谢谢! 最
我已经试过了 IPTCInfo3 .但是安装成功后用 pip3 install IPTCInfo 我收到一个导入错误: Python 3.5.2 (default, Oct 11 2016, 04:5
我试图获取 jpeg 图像的 exif,但它不起作用。首先,我使用 BufferedImage 读取图像并将其转换为文件,然后应用与此处相同的代码: https://code.google.com/p
我有一个 Node.js 服务器,其工作是下载 JPEG 图像、将某些数据写入几个 IPTC 字段(例如 Iptc.Application2.Caption)并将图像传递给另一个服务。 理想情况下,我
我看过许多其他类似的问题,但似乎没有一个有准确的答案。 我正在开发一款可处理大量图片的 Android 应用。我希望通过编辑其 IPTC 关键字标签(或其他适当的标签)的值来向图像添加信息。我正在使用
我正在寻找一些库来从 Jpg 文件中读取/写入 IPTC 元数据。开源或付费,无所谓。 它应该适用于 .NET 3.5 和 c#。 有人知道这样的图书馆吗?我用谷歌搜索但没有找到任何东西。 最佳答案
我需要将 IPTC 数据编辑为 jpg。 我使用此代码读取它已有的关键字,但我无法编写新的关键字: IPTC .NET read/write c# library Private Sub Fo
我在使用存储有 EXIF/IPTC 数据的图像时遇到一些问题。 当我使用 imageCreateFromJpeg(旋转/裁剪等)时,新存储的文件不会保留 EXIF/IPTC 数据。 我当前的代码如下所
我是一名优秀的程序员,十分优秀!