【问题标题】:How do I calculate the width and height of a bitmap from this file header?如何从此文件头计算位图的宽度和高度?
【发布时间】:2016-06-11 06:43:34
【问题描述】:
00000000 42 4D 3A FE 05 00 00 00-00 00 36 04 00 00 28 00
00000010 00 00 D1 02 00 00 1D 02-00 00 01 00 08 00 00 00 
00000020 00 00 04 FA 05 00 13 0B-00 00 13 0B 00 00 00 00 

宽度和高度的值是多少?

【问题讨论】:

  • 您认为您对问题的描述是否足够好?甚至没有背景。

标签: image bitmap graphic


【解决方案1】:

根据Wikipedia - BMP file format

Offset (hex)    Offset (dec)    Size (bytes)    Windows BITMAPINFOHEADER[1]
0E              14              4               the size of this header (40 bytes)
12              18              4               the bitmap width in pixels (signed integer)
16              22              4               the bitmap height in pixels (signed integer)

使用您发布的位图标题,宽度和高度将是

Width:  D1 02 00 00
Height: 1D 02 00 00

上面的维基百科链接指出

所有整数值都以 little-endian 格式存储(即 最低有效字节优先)。

如果我的理解是正确的,那就转换为

 Width = 209 + (2 x 256) + (0 x 256^2) + (0 x 256^3) = 721
Height =  29 + (2 x 256) + (0 x 256^2) + (0 x 256^3) = 541

【讨论】:

  • 为什么要乘以 256?
  • width和height都是一个4字节的整数。每个字节 8 位,因此每个字节有 2^8 (256) 个可能的值。所以基本上它是一个基数 256 整数(由于是小端序,字节顺序相反)。所以例如以 10 为底,数字 1250 可以表示为 0 + 5x10 + 2x10^2 + 1x10^3。在以 256 为基的小端整数中,第一个字节是 0-255,第二个字节是完整 256 的个数,依此类推。
猜你喜欢
  • 1970-01-01
  • 2019-05-31
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多