PNG是否包含EXIF数据(例如JPG)?


100

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

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

当前正在使用此as3库读取数据。

  • IDF0-- IDF @ [134-248](9个条目)
    • 方向(短路):1
    • X分辨率(有理):72/1
    • Y分辨率(有理):72/1
    • 分辨率单位(短):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(长):248

 

  • EXIF IDF-- IDF @ [8-134](10个条目)
    • ExifVersion(UNDEFINEDx4):0220
    • DateTimeOrigina(ASCIIx20):2011:04:14 17:22:01
    • UserComment(UNDEFINEDx63):ASCII
    • FlashpixVersion(UNDEFINEDx4):0100
    • 色彩空间(短):1
    • 像素尺寸(长):1022
    • 像素尺寸(长):486
    • 未知(ASCIIx13):图像标记LOL
    • SceneCaptureType(SHORT):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
    • 未知(理性):5/1
    • 未知(ASCIIx2):T
    • 未知(理性):3694/117

 

Answers:


131

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

原始文件:PNG不嵌入EXIF信息。但是,它允许将元数据“ ” 嵌入图像中。一些标准化块对应于一些EXIF属性(物理尺寸,时间戳)。而且还可以将任意文本数据key=>value成对存储,或定义新的块类型。因此,理论上您可以存储任何EXIF信息...但是,...,您可以使用自己的自定义格式。看来,一些试图实现标准化的尝试并未赶上。


30

编辑:从2017年7月开始,PNG正式支持eXIf块来存储EXIF元数据(规范)。ExifTool 10.59及更高版本将EXIF写入PNG图像中的该新块。

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


很高兴知道!您知道它是否也从TIFF中提取吗?
Olivier-interfaSys 2015年

4
PNG组最近一直在考虑添加新的“ eXIf”和/或“ zXIf”块以存储EXIF信息。ExifTool 10.43添加了对“ exIf”和“ zxIf”块的支持。
PhilHarvey

9

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


1
嘿,有没有文件说明了这一点?因为我需要一个证明让我的主管知道,因为我正在从事一个项目,需要我阅读png的EXIF信息。如果是这样,我可以向他展示并让他知道
user1004413 2012年

9
您可以将他指向规范,该规范没有EXIF数据嵌入的隐式或显式规范,也可以指向PNG Wiki条目
感知2012年

5
这并非完全正确。例如,如果使用convert(来自ImageMagick)将JPEG转换为PNG,然后使用convert将PNG转换回JPEG,则新JPEG仍将包含EXIF数据。
mofoe 2015年

GIMP确实将“用户注释”存储为PNG中的“ EXIF2”元数据。似乎在块中有一个用于此的字段。我不确定确切的方式和原因。我自己也有类似的要求。
VectorVictor

1
在2012年,这个答案可能是正确的,但仍然正确吗?
RockPaperLz-掩盖或棺材

7

截至2017年7月,似乎确实已正式注册了名为... 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块的支持可能受到限制。


2

你的意思是:

  1. PNG文件是否包含您列出的元数据项?简短的回答:不同。
  2. 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的文件中使用,但是目前尚不清楚。


0

是的,没有。

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

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

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


无论这些处理器是什么,它们是否都将XMP或EXIF转换为各种标准PNG元数据块或从中转换?
斯图尔特

@Stewart标准的PNG元数据块是有限的,不能表示EXIF或XMP数据的宽度。这就是为什么我们一直将EXIF / XMP编码到文件中(以文本块的形式)的原因。
带翅膀的小行星

好的,我将重新说明一下:这些相同的处理器是否将能够由标准PNG元数据块表示的XMP或EXIF元数据项转换为标准PNG元数据块,反之亦然?
斯图尔特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.