ChatGPT解决这个技术问题 Extra ChatGPT

PNG 是否包含像 JPG 这样的 EXIF 数据?

我想知道PNG是否包含如下数据?

我所做的是将 jpg 文件转换为 png 格式,我希望检索到与 jpg 相同的信息,如下所示:

当前使用此 as3 library 读取数据。

IDF0--- IDF @[134 - 248](9 个条目)方向(SHORT):1 XResolution(RATIONAL):72/1 YResolution(RATIONAL):72/1 ResolutionUnit(SHORT):2 软件(ASCIIx16):QuickTime 7.6 .6 DateTime (ASCIIx20) : 2011:10:02 22:43:37 HostComputer (ASCIIx16) : Mac OS X 10.6.8 Exif IFD (LONG) : 8 34853 GPS IFD (LONG) : 248

方向(短):1

XResolution (RATIONAL) : 72/1

Y分辨率(合理):72/1

分辨率单位(短):2

软件(ASCIIx16):QuickTime 7.6.6

日期时间 (ASCIIx20) : 2011:10:02 22:43:37

主机计算机(ASCIIx16):Mac OS X 10.6.8

Exif IFD(多头):8 34853

GPS IFD(长):248

EXIF IDF--- IDF @[8 - 134](10 个条目) ExifVersion (UNDEFINEDx4) : 0220 DateTimeOrigina (ASCIIx20) : 2011:04:14 17:22:01 UserComment (UNDEFINEDx63) : ASCII FlashpixVersion (UNDEFINEDx4) : 0100 ColorSpace (短):1 PixelXDimension(长):1022 PixelYDimension(长):486 未知(ASCIIx13):图像标签-LOL SceneCaptureType(短):0

ExifVersion (未定义x4) : 0220

DateTimeOrigina (ASCIIx20) : 2011:04:14 17:22:01

用户评论(未定义x63):ASCII

Flashpix版本(未定义x4):0100

颜色空间(短):1

PixelXDimension(长):1022

PixelYDimension(长):486

未知(ASCIIx13):图像标签-LOL

场景捕捉类型(短):0

GPS IDF--- IDF @[248 - 338](7 个条目)互操作性索引(ASCIIx2):N 互操作性版本(RATIONALx3)@425:52/1、1144/100、0/1 未知(ASCIIx2):W 未知( RATIONALx3) : 1/1, 4392/100, 0/1 未知 (RATIONAL) : 5/1 未知 (ASCIIx2) : T 未知 (RATIONAL) : 3694/117

互操作性索引(ASCIIx2):N

互操作性版本 (RATIONALx3) @425: 52/1, 1144/100, 0/1

未知(ASCIIx2):W

未知 (RATIONALx3) : 1/1, 4392/100, 0/1

未知(理性):5/1

未知(ASCIIx2):T

未知(理性):3694/117


h
hippietrail

编辑:Extensions to the PNG 1.2 Specification 的 1.5.0 版(2017 年 7 月)终于添加了一个 EXIF 块。编码器-解码器是否开始支持它还有待观察。

原文:PNG 不嵌入 EXIF 信息。但是,它允许在图像中嵌入元数据“chunks”。一些 standardized chunks 对应于一些 EXIF 属性(物理尺寸、时间戳)。还可以将任意文本数据存储为 key=>value 对,或定义新的块类型。因此,理论上您可以存储任何 EXIF 信息......但是,唉,以您自己的自定义格式。似乎有些attempts 的标准化还没有赶上。


h
hippietrail

编辑:截至 2017 年 7 月,PNG 正式支持 eXIf 块来存储 EXIF 元数据 (specification)。 ExifTool 10.59 及更高版本将 EXIF 写入 PNG 图像中的这个新块。

原文:ImageMagick 在从 JPEG 图像转换时将 EXIF 信息存储在 PNG“原始配置文件类型 APP1”zTXt 块中。 ExifTool 也支持这种将 EXIF 存储在 PNG 图像中的方法(我相信 Exiv2 也支持),但它不是 PNG 或 EXIF 规范的一部分。


很高兴知道!你知道它是否也从 TIFF 中提取它吗?
PNG 小组最近一直在考虑添加一个新的“eXIf”和/或“zXIf”块来存储 EXIF 信息。 ExifTool 10.43 添加了对“exIf”和“zxIf”块的支持以支持这一点。
P
Perception

PNG 不支持嵌入 EXIF 信息。当您从 JPEG 转换为 PNG 时,信息会丢失。


嘿,有没有任何文件可以说明?因为我需要一个证明让我的主管知道,因为我正在做一个需要我阅读 png 的 EXIF 信息的项目。如果是这样,我可以给他看,让他知道
您可以将他指向 specification,它没有对 EXIF 数据嵌入的隐式或显式规范,或者指向 the PNG wiki entry
这并不完全正确。例如,如果您使用 convert(来自 ImageMagick)将 JPEG 转换为 PNG,然后使用 convert 将 PNG 转换回 JPEG,则新的 JPEG 中仍会包含 EXIF 数据。
在 2012 年,这个答案可能是正确的,但它仍然准确吗?
错了,过去和现在。 PNG 确实有元数据——它只是不使用 EXIF 标准。如此好的转换程序会在适用的情况下将 EXIF 元数据转换为 PNG 元数据。 (现在 PNG 有一个 eXIf 块,但我不确定为什么要添加它。大概它是为在从 JPEG 或 TIFF 转换时继承原始 EXIF 而设计的。)
8
8bittree

July 2017 开始,似乎确实有正式注册的 EXIF 数据块,称为... eXIf

eXIf 块的数据段包含 [CIPA DC-008-2016] 的“4.7.2 压缩数据中 APP1 的互操作性结构”中指定格式的 Exif 配置文件,除了 JPEG APP1 标记、长度和“Exif不包括 4.7.2(C) 中描述的 ID 代码,即“Exif”、NULL 和填充字节。

请注意,这既是 A)只有几个月大(截至撰写时),也是 B)可选扩展,而不是基本规范的一部分。因此,在许多应用程序中,对 eXIf 块的支持可能会受到限制。


A
Asteroids With Wings

是和不是。

正如其他答案已经说明的那样,PNG 在 v1.5.0(2017 年)中添加 eXIf 之前没有正式的 EXIF 块,据我所知,这个块仍然没有得到广泛的支持。

但那是因为它不需要它。许多软件按照约定在一个 iTXt(或压缩的 zTXt)块中将 EXIF 编码为 PNG,标记为 “原始配置文件类型 APP1”。较新的 eXIf 块旨在为此提供一个标准化的位置,尽管在我看来这艘船现在已经航行了。

此外,EXIF 标准的大部分元数据都可以由 XMP 表示,这是一种替代的和更新的元数据传输机制,具有用于此目的的 EXIF 命名空间。多年来,PNG 文件在 iTXt 块中包含 XMP 文档(包括翻译的 EXIF 元数据)。您会发现许多处理器在运行中在两者之间进行转换。


这些相同的处理器(无论它们是什么)是否将 XMP 或 EXIF 转换为各种标准 PNG 元数据块或从各种标准 PNG 元数据块转换?
@Stewart 标准的 PNG 元数据块是有限的,不能代表 EXIF 或 XMP 数据的广度。这就是为什么我们历来将 EXIF/XMP 编码到文件中(以文本块的形式)。
好的,我重新表述一下:这些相同的处理器是否将那些能够由标准 PNG 元数据块表示的 XMP 或 EXIF 元数据项转换为标准 PNG 元数据块,反之亦然?
@斯图尔特我不知道。我对此表示怀疑。如果他们这样做,那将是非常有限的。总的来说,这样做确实没有任何好处。 EXIF 和 XMP 字段可能不是标准的,但它们完全是常规的并且被广泛使用。所以每个人都只是使用它。 PNG 元数据确实包含一些关键字/作者的东西,但它主要是图像数据。
S
Stewart

你的意思:

PNG 文件是否包含您列出的元数据项?简短的回答:它会有所不同。 PNG 是否使用 EXIF 标准来存储此类元数据?简短的回答:一般不会。

通常,PNG 使用属于 PNG 标准的各种块来存储元数据。浏览您的清单:

方向 - 不适用于 PNG - 从左上角开始逐行固定。

XResolution、YResolution、ResolutionUnit - pHYs 块。

软件、HostComputer、其他文本元数据 - tEXt、iTXt、zTXt 块。

DateTime - 我不清楚这是什么日期/时间。 tIME 表示上次修改图像数据的日期/时间;其他日期/时间可以存储在文本块中。创建时间实际上是定义的文本块键,但没有规定格式和处理时区的方式,这是一个糟糕的设计。

ColorSpace、PixelXDimension、PixelYDimension - 不确定这些将如何成为元数据。它们是图像的基础,因此位于 IHDR 块中。

不知道你列出的其他人是什么意思。

但令人费解的是,近年来,一个 eXIf 块已添加到扩展块的官方列表中(这本质上是 PNG 规范的附录)。据推测,它的目标是保留从 JPEG/TIFF 转换为 PNG 的文件中的信息,并且不打算在最初创建为 PNG 的文件中使用,但这并不清楚。