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

时间:2012-03-03 00:49:03

标签: actionscript-3 png jpeg exif

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

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

目前使用此as3 library来读取数据。

  • IDF0 --- IDF @ [134 - 248](9个条目)
    • 方向(简称):1
    • XResolution(RATIONAL):72/1
    • YResolution(RATIONAL):72/1
    • ResolutionUnit(简称):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

  • 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(LONG):1022
    • PixelYDimension(LONG):486
    • 未知(ASCIIx13):图片标签-LOL
    • SceneCaptureType(简称):0

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

6 个答案:

答案 0 :(得分:122)

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

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

答案 1 :(得分:29)

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

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

答案 2 :(得分:11)

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

答案 3 :(得分:6)

July 2017开始,似乎有一个正式注册的EXIF数据块,名为... eXIf

  

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

请注意,这是A)仅仅几个月(写作时)和B)可选扩展,不是基本规范的一部分。因此,在许多应用中,对eXIf块的支持可能会受到限制。

答案 4 :(得分: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的文件中使用,但这尚不清楚。

答案 5 :(得分:1)

是,不是。

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

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

此外,许多EXIF标准的元数据都可以由XMP表示,XMP是一种替代且较新的元数据传输机制,正是出于此目的,该机制具有EXIF命名空间。多年来,PNG文件以iTXt块的形式包含XMP文档(包括转换后的EXIF元数据)。您会发现许多处理器都可以在两者之间进行实时转换。