我正在用 Java 实现 RFB 协议(VNC 服务器)。我无法理解PIXEL_FORMAT
协议中提供的内容。像素格式数据结构的定义是:
+--------------+--------------+-----------------+
| No. of bytes | Type [Value] | Description |
+--------------+--------------+-----------------+
| 1 | U8 | bits-per-pixel |
| 1 | U8 | depth |
| 1 | U8 | big-endian-flag |
| 1 | U8 | true-color-flag |
| 2 | U16 | red-max |
| 2 | U16 | green-max |
| 2 | U16 | blue-max |
| 1 | U8 | red-shift |
| 1 | U8 | green-shift |
| 1 | U8 | blue-shift |
| 3 | | padding |
+--------------+--------------+-----------------+
RFB 协议详细定义了每个标志的含义,但我仍然无法确定原始 ARGB 图像的正确值。我正在使用以下值:
bits-per-pixel = 32
depth = 32
big-endian-flag = 1
true-color-flag = 1
red-max = 255
green-max = 255
blue-max = 255
red-shift = 0
green-shift = 0
blue-shift = 0
padding = 0
在使用 RealVNC 客户端时,我得到灰度图像,而在使用 TightVNC 客户端时,我并排得到图像的四个不同层。
谁能帮我获得正确的编码?