【问题标题】:Does PNG contain EXIF data like JPG?PNG 是否包含像 JPG 这样的 EXIF 数据?
【发布时间】:2012-03-21 11:47:19
【问题描述】:

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

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

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

  • IDF0--- IDF @[134 - 248](9 个条目)
    • 方向(短):1
    • XResolution (RATIONAL) : 72/1
    • YResolution (RATIONAL) : 72/1
    • ResolutionUnit (SHORT) : 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
    • 用户注释 (UNDEFINEDx63) : ASCII
    • FlashpixVersion (UNDEFINEDx4) : 0100
    • 色彩空间(短):1
    • PixelXDimension(长):1022
    • PixelYDimension(长):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

 

【问题讨论】:

    标签: actionscript-3 png jpeg exif


    【解决方案1】:

    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 而设计的。)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      编辑:截至 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”块的支持以支持这一点。
      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        你的意思是:

        1. PNG 文件是否包含您列出的元数据项?简短回答:因人而异。
        2. PNG 是否使用 EXIF 标准来存储此类元数据?简短回答:一般不会。

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

        • 方向 - 不适用于 PNG - 固定为从左上角开始逐行显示。
        • XResolution、YResolution、ResolutionUnit - pHYs 块。
        • 软件、HostComputer、其他文本元数据 - tEXt, iTXt, zTXt 块。
        • DateTime - 我不清楚这是什么日期/时间。 tIME 表示上次修改图像数据的日期/时间;其他日期/时间可以存储在文本块中。 Creation Time其实是一个定义好的文本块键,但是没有规定格式和时区的处理方式,这是一个糟糕的设计。
        • ColorSpace、PixelXDimension、PixelYDimension - 不确定这些将如何成为元数据。它们是图像的基础,因此位于 IHDR 块中。
        • 不确定您列出的其他内容是什么意思。

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

        【讨论】:

          【解决方案6】:

          是和不是。

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

          但那是因为它不需要它。许多软件按照惯例在一个iTXt(或压缩的zTXt)块中将EXIF 编码为一个PNG,标记为“Raw profile type APP1”。较新的 eXIf 块旨在为此提供一个标准化的位置,尽管我认为这艘船现在已经航行了。

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

          【讨论】:

          • 这些相同的处理器,不管它们是什么,是否将 XMP 或 EXIF 转换为各种标准 PNG 元数据块或从各种标准 PNG 元数据块转换?
          • @Stewart 标准的 PNG 元数据块是有限的,不能代表 EXIF 或 XMP 数据的广度。这就是我们历来将 EXIF/XMP 编码到文件中的原因(以文本块的形式)。
          • 好的,我会重新表述:这些相同的处理器是否将那些能够由标准 PNG 元数据块表示的 XMP 或 EXIF 元数据项转换为标准 PNG 元数据块,反之亦然?
          • @Stewart 我不知道。我对此表示怀疑。如果他们这样做,那将是非常有限的。总的来说,这样做真的没有任何好处。 EXIF 和 XMP 字段可能不是标准的,但它们完全是常规的并且被广泛使用。所以每个人都只是使用它。 PNG 元数据确实包含一些关键字/作者的内容,但主要是图像数据。
          猜你喜欢
          • 1970-01-01
          • 2012-05-16
          • 1970-01-01
          • 1970-01-01
          • 2016-03-05
          • 2016-11-05
          • 1970-01-01
          • 1970-01-01
          • 2013-10-23
          相关资源
          最近更新 更多