从字节获取PNG大小

问题描述 投票:0回答:1

我正在尝试从数据流中提取 PNG 图像的大小

考虑流的起始数据

137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 2 84 0 0 3 74 8 2 0 0 0 195 81 71 33 0 0 0 ...
^                        ^        ^           ^                           ^            ^

其中包含以下信息

  • 签名:
    137 80 78 71 13 10 26 10
  • IHDR 块:
    • 长度
      0 0 0 13
    • 类型
      73 72 68 82
    • 数据
      0 0 2 84 0 0 3 74 8 2 0 0 0
    • CRC:
      195 81 71 33
  • 然后一个新的块开始。

有关图像大小的信息被编码在data块的8个字节中:

  • 宽度
    0 0 2 84
    或以字节为单位
    b'\x00\x00\x02T'
  • 高度
    0 0 3 74
    或以字节为单位
    b'\x00\x00\x03J'

我知道图像的宽度为

596
px,高度为
842
px,但我不知道如何计算图像的实际大小。

PS 这些值在 Python 中给出,这里是二进制形式的数据流

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x02T\x00\x00\x03J\x08\x02\x00\x00\x00\xc3QG!\x00\x00\x00\tpHY'

python size png chunks
1个回答
0
投票

每个字节都是相应维度的以 256 为基数的数字。所以 0 * 256^3 + 0 * 256^2 + 2 * 256 + 84 = 596,而 0 * 256^3 + 0 * 256^2 + 3 * 256 + 74 = 842。

© www.soinside.com 2019 - 2024. All rights reserved.