我一直在阅读gif规范,试图了解如何计算颜色表调色板的大小。
来自维基百科上的示例here
byte# hexadecimal text or
(hex) value Meaning
0: 47 49 46
38 39 61 GIF89a Header
Logical Screen Descriptor
6: 03 00 3 - logical screen width in pixels
8: 05 00 5 - logical screen height in pixels
A: F7 - GCT follows for 256 colors with
resolution 3 x 8 bits/primary
如果查看第10个字节,可以看到十六进制F7
代表十进制数247
。
现在我从阅读各种代码示例中知道这是一个由以下内容组成的打包值:
0x80 | // 1 : global color table flag = 1 (gct used)
0x70 | // 2-4 : color resolution
0x00 | // 5 : gct sort flag = 0
7 |; // 6-8 : gct size
0 |// background color index
0 |// pixel aspect ratio - assume 1:1
我还确定尺寸7
代表比特深度减去1
。可用于确定颜色数量。
2 ^ (0 + 1) = 4
2 ^ (1 + 1) = 4
2 ^ (2 + 1) = 8
2 ^ (3 + 1) = 16
2 ^ (5 + 1) = 64
2 ^ (6 + 1) = 128
2 ^ (7 + 1) = 256
http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp http://www.devx.com/projectcool/Article/19997/0/page/7
我想知道的是如何使用C#从颜色数量计算位深度。
由于这是你想要快速做的事情,我想象使用某种比特移位机制将是最好的方法。我不是计算机科学家,所以我很挣这些事情。
我有一种可怕的感觉,这很简单......