- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在努力从一位摄影师提供给我的客户的 JPEG 中提取一些信息。
在 Windows 下检查时,所有图像都包含名为标签的字段中的数据:
为了首先进行一些测试,我制作了以下脚本并使用以下代码迭代二进制文件头中的条目。
有时我会得到 ImageDescription 的值。通常在版权和作者中显示文本,但标签内容永远不会显示在这里,它是客户最希望自动化的内容的捕获。
谁能告诉我如何访问标签字段内容?
上传的文件副本是here .
更新 - 根据 Tiger-222 的响应,将 IDF0 更改为 ANY_TAG 并将第三个参数 true 添加到 exif_read_data()。还在帖子末尾添加了 print_r 输出
更新 2 添加了请求的 error_display() 和 ini_set() 调用,还尝试了 exif_read_data() 第 2 个参数 0 代替 'ANY_TAG' 每 https://php.net/manual/en/function.exif-read-data.php
<?php
ini_set('display_errors', 1);
ini_set('exif.encode_unicode', 'UTF-8'); // To see WINXP values
error_reporting(-1);
$n = (intval($_GET['n'])) ? $_GET['n'] : 99;
echo "ANI_$n.jpg:<br />\n";
$exif = exif_read_data("ANI_$n.jpg", 'ANY_TAG', true);
echo $exif===false ? "No header data found.<br />\n" : "Image contains the following headers:<br><br />\n";
if ($exif) {
foreach ($exif as $key => $section) {
if (is_array($section)) {
foreach ($section as $name => $val) {
echo "$key.$name: $val<br />\n";
}
} else {
echo "$key: $section<br>\n";
}
}
}
?>
鸣鹤图片脚本转储内容如下:
ANI_69.jpg:
Image contains the following headers:
FileName: ANI_69.jpg
FileDateTime: 1428255617
FileSize: 2448245
FileType: 2
MimeType: image/jpeg
SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF
COMPUTED.html: width="1798" height="2697"
COMPUTED.Height: 2697
COMPUTED.Width: 1798
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 0
COMPUTED.Copyright: Photographer name here
COMPUTED.Thumbnail.FileType: 2
COMPUTED.Thumbnail.MimeType: image/jpeg
ImageWidth: 1798
ImageLength: 2697
BitsPerSample.0: 8
BitsPerSample.1: 8
BitsPerSample.2: 8
PhotometricInterpretation: 2
Orientation: 1
SamplesPerPixel: 3
XResolution: 1000000/10000
YResolution: 1000000/10000
ResolutionUnit: 2
Software: Adobe Photoshop CS6 (Macintosh)
DateTime: 2014:12:28 19:17:36
Artist: Photographer name here
Copyright: Photographer name here
Exif_IFD_Pointer: 316
THUMBNAIL.Compression: 6
THUMBNAIL.XResolution: 72/1
THUMBNAIL.YResolution: 72/1
THUMBNAIL.ResolutionUnit: 2
THUMBNAIL.JPEGInterchangeFormat: 554
THUMBNAIL.JPEGInterchangeFormatLength: 3211
ExifVersion: 0230
DateTimeOriginal: 2014:11:03 11:14:27
DateTimeDigitized: 2014:11:03 11:14:27
SubSecTimeOriginal: 76
SubSecTimeDigitized: 76
ColorSpace: 65535
ExifImageWidth: 1798
ExifImageLength: 2697
这是来自 $exif = exif_read_data("ANI_$n.jpg", 'ANY_TAG', true);
Array
(
[FILE] => Array
(
[FileName] => ANI_69.jpg
[FileDateTime] => 1428255617
[FileSize] => 2448245
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF
)
[COMPUTED] => Array
(
[html] => width="1798" height="2697"
[Height] => 2697
[Width] => 1798
[IsColor] => 1
[ByteOrderMotorola] => 0
[Copyright] => Digital Roux Photography LLC
[Thumbnail.FileType] => 2
[Thumbnail.MimeType] => image/jpeg
)
[IFD0] => Array
(
[ImageWidth] => 1798
[ImageLength] => 2697
[BitsPerSample] => Array
(
[0] => 8
[1] => 8
[2] => 8
)
[PhotometricInterpretation] => 2
[Orientation] => 1
[SamplesPerPixel] => 3
[XResolution] => 1000000/10000
[YResolution] => 1000000/10000
[ResolutionUnit] => 2
[Software] => Adobe Photoshop CS6 (Macintosh)
[DateTime] => 2014:12:28 19:17:36
[Artist] => Digital Roux Photography LLC
[Copyright] => Digital Roux Photography LLC
[Exif_IFD_Pointer] => 316
)
[THUMBNAIL] => Array
(
[Compression] => 6
[XResolution] => 72/1
[YResolution] => 72/1
[ResolutionUnit] => 2
[JPEGInterchangeFormat] => 554
[JPEGInterchangeFormatLength] => 3211
)
[EXIF] => Array
(
[ExifVersion] => 0230
[DateTimeOriginal] => 2014:11:03 11:14:27
[DateTimeDigitized] => 2014:11:03 11:14:27
[SubSecTimeOriginal] => 76
[SubSecTimeDigitized] => 76
[ColorSpace] => 65535
[ExifImageWidth] => 1798
[ExifImageLength] => 2697
)
)
最佳答案
三分(感谢 jerrygarciuh 的耐心和帮助)。
1) 要查看额外信息,只需将第三个参数传递给 true
:
$exif = exif_read_data("ANI_$n.jpg", 'IFD0', true);
如解释here , 它将强制转换为数组以避免部分之间的冲突。您会在 IFD0.Keywords
关键字下找到标签。
2) There is an issue使用 WINXP.Keywords
。要正确显示这些信息,只需将编码设置为 UFT-8:
ini_set('exif.encode_unicode', 'UTF-8');
3)感谢this question from Ferdy ,可以使用 iptcparse 读取 Lightroom 设置的额外信息.这是完整的脚本:
ini_set('exif.encode_unicode', 'UTF-8'); // To see WINXP values
// Exif informations -- limited by PHP
$exif = exif_read_data("ANI_$n.jpg", 'ANY_TAG', true);
print_r($exif);
// Additionnal informations from Lightroom
getimagesize("ANI_$n.jpg", $infos);
if ( isset($infos['APP13']) ) {
print_r(iptcparse($infos['APP13']));
}
输出:
Array
(
[FILE] => Array
(
[FileName] => ANI_69.or.jpg
[FileDateTime] => 1431382165
[FileSize] => 2450950
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, WINXP
)
[COMPUTED] => Array
(
[html] => width="1798" height="2697"
[Height] => 2697
[Width] => 1798
[IsColor] => 1
[ByteOrderMotorola] => 1
[Copyright] => Digital Roux Photography LLC
[Thumbnail.FileType] => 2
[Thumbnail.MimeType] => image/jpeg
)
[IFD0] => Array
(
[ImageWidth] => 1798
[ImageLength] => 2697
[BitsPerSample] => Array
(
[0] => 8
[1] => 8
[2] => 8
)
[PhotometricInterpretation] => 2
[ImageDescription] => Rusty Costanza / Digital Roux Photography
[Orientation] => 1
[SamplesPerPixel] => 3
[XResolution] => 1000000/10000
[YResolution] => 1000000/10000
[ResolutionUnit] => 2
[Software] => Adobe Photoshop CS6 (Macintosh)
[DateTime] => 2014:12:28 19:17:36
[Artist] => Digital Roux Photography LLC
[Copyright] => Digital Roux Photography LLC
[Exif_IFD_Pointer] => 2468
[Title] => Rusty Costanza / Digital Roux Photography
[Keywords] => whooping crane
[UndefinedTag:0xEA1C] => �
)
[THUMBNAIL] => Array
(
[Compression] => 6
[XResolution] => 72/1
[YResolution] => 72/1
[ResolutionUnit] => 2
[JPEGInterchangeFormat] => 4894
[JPEGInterchangeFormatLength] => 3371
)
[EXIF] => Array
(
[ExifVersion] => 0230
[DateTimeOriginal] => 2014:11:03 11:14:27
[DateTimeDigitized] => 2014:11:03 11:14:27
[SubSecTimeOriginal] => 76
[SubSecTimeDigitized] => 76
[ColorSpace] => 65535
[ExifImageWidth] => 1798
[ExifImageLength] => 2697
[UndefinedTag:0xEA1C] => �
)
[WINXP] => Array
(
[Title] => 刀甀猀琀礀 䌀漀猀琀愀渀稀愀 ⼀ 䐀椀最椀琀愀氀 刀漀甀砀 倀栀漀琀漀最爀愀瀀栀礀ഀ
[Keywords] => 眀栀漀漀瀀椀渀最 挀爀愀渀攀
)
)
Array
(
[1#090] => Array
(
[0] =>
)
[2#000] => Array
(
[0] =>
)
[2#055] => Array
(
[0] => 20141103
)
[2#060] => Array
(
[0] => 111427+0000
)
[2#090] => Array
(
[0] => New Orleans
)
[2#025] => Array
(
[0] => whooping crane
)
[2#080] => Array
(
[0] => Digital Roux Photography LLC
)
[2#120] => Array
(
[0] => Rusty Costanza / Digital Roux Photography
)
[2#116] => Array
(
[0] => Digital Roux Photography LLC
)
[2#221] => Array
(
[0] => 0:0:0:-00001
)
[2#062] => Array
(
[0] => 20141103
)
)
顺便说一句,漂亮的照片;)
关于php - Windows 显示但 PHP 不显示的 EXIF(或其他元数据)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177313/
我正在使用 exiv2操作 jpeg 文件中的元数据。我需要将更多与图像处理相关的信息写入元数据中。除了标准标签之外,是否可以创建自定义 Exif 标签? 最佳答案 来自 http://www.exi
是否可以检测是否有人修改了照片中的 EXIF 数据?有人如何检测到 EXIF 数据已被修改? 最佳答案 参见 Can digital cameras sign images to prove auth
如上图所示,我选择拍照exif信息为空。我选择了来自手机的图像选项,但 exif 信息不为空。 最佳答案 现在可以通过 ExifInterface 支持库从流中读取 EXIF 数据。 compile
我想使用iphone-exif library我的项目中的 EXIF 数据。但我不知道我是否犯了任何错误,它给出了像 这样的错误 架构 i386 的 undefined symbol : “_OBJC
场景:几个人带着数码相机一起去度假,然后抓拍。有些人记得将他们的相机时钟调整为本地时间,有些人将它们留在家乡时间,有些人将它们留在他们出生国家的本地时间,还有一些人将他们的相机留在工厂时间。 问题:照
如何加载图像并根据它的方向 exif 数据旋转它并使用UIImageOrientationUp exif 数据(或没有任何方向)保存它exif 数据)以便不处理 exif 方向数据的软件将正确显示图像
PHP 版本 5.2.9 我想知道是否有人在使用 EXIF 2.3 的 PHP 的 exif_read_data() 提取 GPS 或什至只是提取所有 EXIF 数据时遇到问题(并可能找到解决方案)。
我试图了解 jpeg 文件(十六进制)的 EXIF header 部分以及如何理解它,以便我可以提取数据,特别是 GPS 信息。无论好坏,我都在使用 VB.Net 2008(对不起,这是我现在可以掌握
我喜欢遵循此处描述的简码约定:https://laurakalbag.com/processing-responsive-images-with-hugo/并像这样在 config.toml 中设置
有谁知道 EXIF 键名的一个很好的解释?我正在写一个照片组织者,并希望尽可能多地从照片中获取信息。 但是,EXIF 键名并不是很有帮助。例如,据我所知(通过从 iPhoto 导出图像) 专辑或集合名
我正在研究照片查看器。在这种情况下,我编写了一个小类来读取和使用一些 EXIF 数据,例如图像方向。这门课很适合阅读。 但是,我会添加一个新选项来旋转照片。我想旋转和写入照片数据本身,而不仅仅是重写方
我是 PHP 新手,正在改编来自 http://www.techrepublic.com/article/create-a-dynamic-photo-gallery-with-php-in-thre
我正在使用我正在拍摄的照片中的 iPhone EXIF 数据。 目前我得到的 EXIF 数据是: { ApertureValue = "2.970854"; ColorSpace =
我有一堆带有地理标记的图片,我正在使用 pyexiv2 在 python 中访问它们。它工作得很好,只是我不明白“GPSImgDirection”值给出了什么。基本上,它是两个很大的数字,例如: 21
在Python中,如何找出图像文件中EXIF标签的位置?我假设它位于文件的开头,但我有一些专有的图像格式,并且希望确保情况始终如此。谢谢。 最佳答案 这不仅取决于 EXIF 本身,还取决于文件类型。
我正在尝试从 DNG 文件(不是缩略图)获取 jpg 预览。据我所知,预览只是一个 exif 预览,并不特定于 DNG。然而,尽管我在谷歌上搜索了很多次,但我找不到任何关于专门从 c# 文件的 exi
我正在使用这个库 http://blog.nihilogic.dk/2008/05/reading-exif-data-with-javascript.html .我这样调用库:EXIF.pretty
我需要访问已加载到页面上的图像中的 EXIF 数据。说,从浏览器扩展。 AFAIU,有一些 javascript 方法可以完成任务: 使用JavaScript-Load-Image ; 使用Nihol
我有一个 iOS 应用程序,用户可以在其中上传使用 UIImagePickerController 拍摄的照片。 当我查看 jpg exif 数据时,我注意到大量照片的“相机型号名称”中填写了“iPo
我想在特定相册中保存一些带有图像的字符串。所以我使用了[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{添加 Assets 。 但是当我从相册
我是一名优秀的程序员,十分优秀!