【问题标题】:How is data stored in an image file数据如何存储在图像文件中
【发布时间】:2012-08-28 21:31:44
【问题描述】:

我对图像数据的存储方式感兴趣。例如,可以在 Windows 中提取图像并获取有关图像的信息(使用的相机、日期等)。

在一般层面上(我确定 png、jpeg 等不同)图像是否具有某种类型的标题部分,其中定义了属性,可能还有一个通过多维数组指定特定像素颜色的正文部分?

如果您可以查看类似于网页的来源,图片来源会是什么样子?如果我在计算机上打开 JPEG,前几行看起来像 XML。

【问题讨论】:

  • en.wikipedia.org/wiki/Image_file_formats - 按照其中的链接访问您想了解的任何特定格式,并查看每种格式页面上的“技术详情”部分。
  • 图像是二进制的。如果您在支持 HEX 模式的文本编辑器中打开一个 jpeg,您将能够看到它的 guts,可以说更好snag.gy/X1b7B.jpg。还可以查看 EXIF,了解大多数相机如何在 jpeg 文件的标题中存储信息的详细信息。 en.wikipedia.org/wiki/Exchangeable_image_file_format
  • 当你说二进制时,我假设像素数据是二进制的,但元数据必须存储在某种类型的键值对中,对吧?而且我假设这可能是 xml,因此如果尝试将文件解释为 ascii 文本,您将看到该键/值对(例如 xml),但二进制像素数据看起来像乱码。

标签: image


【解决方案1】:

您看到的 XML 是 Exchangeable image file format (or Exif) 的一部分。如果您在 Hex 编辑器中查看该文件,您应该会看到如下标记:

每个 JPEG 文件都从二进制值 '0xFFD8' 开始,以二进制值结束 值“0xFFD9”。 JPEG数据中有几个二进制0xFFXX数据, 它们被称为“标记”,它表示JPEG的周期 信息数据。 0xFFD8 表示 SOI(图像开始),0xFFD9 表示 EOI(图片结束)。

PNG 文件总是以these eight bytes: 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A 开头。然后,它具有与 JPEG 类似的机制,即使用字节标记来指示数据部分。阅读完整规范here

【讨论】:

    猜你喜欢
    • 2011-07-30
    • 2011-01-04
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2020-01-29
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多