0

この画像形式が何を意味するのかを理解するのに少し苦労しています: directX の B8G8R8A8_UNorm. これはカラー チャネルごとに 8 ビットですか? たとえば、色が 0xAABBCCFF の場合、色は次のようになります。

  • B = AA
  • G=BB
  • R = CC
  • A = DD

、ある種の灰色はどれですか?たとえば、これは R32G32B32A32_float と比べてどうですか?

例えば。16 進数を確認するために、HxD の画像を見ています。最初の 8 バイト (ヘッドの後) は次のとおりです。

FB 52 6F 3F

これは緑です。しかし、画像を Gimp にロードしてピクセルを見ると、ピクセルはピンク色 (#FFF8B5B5 => ARGB) です。そのため、同じカラー チャンネルは 1 つもありません。

これはどうやってできるの?B8G8R8A8_UNorm の正確な意味は何ですか? また、通常の画像処理プログラムが使用するのと同じ形式にするにはどうすればよいですか? (つまり、この例では R = F8、G = B5、B = b5、A = FF)

4

1 に答える 1

2

いいえ、あなたは間違った順序でそれを見ています。それは行く:

8-bit Blue, 8-bit Green, 8-Bit Red, 8-bit Alpha. 

これを逆にすると、次のようになります。

3F 6F 52 FB
^A ^R ^G ^B

C# の場合:

Color c = Color.FromArgb(0x6F, 0x52, 0xFB); // Pink.
                          ^R     ^G    ^B

これは #FF6F52FB になりますが、これも Gimp とは異なります。UNormフラグがこれに小さな調整を加えると仮定します。多分それはそれを少し軽くします。

完全なピンクではありませんが、変なピンクっぽい色です。

于 2013-01-31T01:32:43.203 に答える