我正在寻找将像素数据从服务器传输到 android 程序。在服务器上,像素数据采用 RGBA 格式,每种颜色/透明度一个字节。不幸的是,在 android 上,相应的像素格式是 ARGB,这意味着 alpha 通道出现在颜色数据之前,而不是像服务器上那样在之后。我担心在服务器上将 RGBA 数据改组为 ARGB 格式会太慢,所以我希望找到另一种解决方法。顺便说一下,服务器是用python编写的。我正在使用此处介绍的函数捕获屏幕数据:Image.frombuffer with 16-bit image data。如果有一种方法可以使用此方法(或其他方法)以 ARGB 格式甚至 RGB_565 抓取屏幕截图,我也很想听听。
我想解决这个问题的一个技巧是在 canvas.drawbitmap(int[], ...) 上使用 isPreMultiplied 标志,然后只从服务器发送 RGB 字节。然后我可以将 RGB 位重新组合为 android 设备上的整数并将其发送到 drawbitmap,完全忽略 alpha 通道。
然而,这给我留下了另一个问题。整数由 4 个字节组成,我的 byte[] 数组(RGB 值)中有一个 3 个字节的序列。我正在使用这里提出的一些解决方案:byte array to Int Array在我传输 RGBA 数据时将我的 byte[] 转换为 int[]。但是现在它只是 3 字节序列,我不确定如何快速将其转换为整数。我希望接近实时的图像更新,所以我需要一种方法来快速做到这一点。有任何想法吗?