如何向图像添加元数据?

时间:2010-08-11 19:49:37

标签: php image metadata

将元数据插入到图像文件中的位置以及标记的内容是什么?我想用php做到这一点。

6 个答案:

答案 0 :(得分:5)

Php集成到图像中;)

http://bechtsoudis.com/archive/2011/09/08/php-code-into-jpeg-metadata-from-hide-to-unhide/index.html

JPEG,TIFF,PSD,Raw和其他几种文件格式可以包含以下任何或所有标准类型的元数据:

IPTC-IIM 这种模式通常被称为“遗留”IPTC,是在20世纪90年代早期开发的,主要是为了帮助新闻机构为早期数字图像提供字幕。它的主要优点是大多数图像编辑和管理程序可以读写其广泛兼容的字段。

IPTC Core&延期 这个更新的架构建立在IIM遗留的基础上,通过添加更多类型的描述和管理信息,包括新的字段,以满足股票摄影和文化遗产社区的需求,以更强大的数据格式打包,“XMP。”

PLUS 用于识别和定义图像使用许可的图片许可通用系统描述了用于生成字符串的模式和工具,这些字符可以识别许可图像使用的版权所有者,用户,范围和条款。

XMP 这是IPTC Core和Extension用于存储和访问图像元数据的较新数据格式。它支持在图像文件或附带的sidecar文件中存储元数据,并允许创建自定义元数据字段。

的Exif 这些元数据通常由相机和其他捕获设备创建,包括有关图像及其捕获方法的技术信息,如曝光设置,捕获时间,GPS位置信息和相机型号。

都柏林核心 许多图像库和各种行业使用此模式将信息与图像文件存储在一起。它的一些领域可以与IPTC格式互操作。

答案 1 :(得分:2)

您可以使用imagemagick等图像库

http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20183

我知道另一个名为Jhead的工具,如果图像

,它可以撤消和修改一些元数据

http://www.sentex.net/~mwandel/jhead/

答案 2 :(得分:2)

您可以在PHP中使用iptcembed函数向图像添加信息。 用法可在以下网址找到:http://php.net/manual/en/function.iptcembed.php

可以使用iptcparse函数检索添加的数据。

请告诉我这是否适合您。

答案 3 :(得分:0)

我最近在w3c博客上看到一篇非常酷的文章,关于将RDFa和HTML <imagemap>结合起来,通过不仅指定图像中的内容以及图像中的位置来丰富图像:http://www.w3.org/QA/2008/01/rdfa_and_html_imagemap.html

答案 4 :(得分:0)

您可以选择使用exiftool命令行工具的更简单的替代方案。

要使用它,我今天为个人项目编写了一个简单的PHP脚本,如果你已经在PHP变量中编写了它,它将编写纬度/经度信息。

并且,这是非常重要的一种方法,可以根据之前的值添加GPSLatitudeRef和GPSLongitudeRef值。基本上,如果纬度为正,则GPSLatitudeRef应为“北”值,如果为负则为“南”。对于GPSLongitudeRef是相同的,但正面时为“东方”,负面时为“西方”。

$bashExifEdit = "";
$longitudeRef = "East";
if ($longitude < 0) {
    $longitudeRef = "West";
}
$latitudeRef = "North";
if ($latitude < 0) {
    $latitudeRef = "South";
}

if ($sleepingPlace != null) {
    $bashExifEdit .= "exiftool -GPSLongitude=\"".$longitude."\"  -GPSLatitude=\"".$latitude.".\" -GPSLatitudeRef=\"$latitudeRef\" -GPSLongitudeRef=\"$longitudeRef\"  images/your_image.jpg\n";
}

这将生成一个字符串,其中包含每个图像的endline字符。如果你添加一个for然后你可以写它$bashExifEdit的内容,并且瞧!根据图像的纬度/经度设置所有GPS细节(高度除外,与纬度/经度不同)的自动方式。

答案 5 :(得分:-1)

在PHP中,您可以使用标题:

示例:

 header('Content-Length: ' . filesize($file));  /// that's the file size 

你可以添加更多这样的标题,它会起作用。你甚至可以发送一些自定义标题,它仍然可以工作:)