gpt4 book ai didi

Android转3序列byte[]转int[]

转载 作者:行者123 更新时间:2023-11-30 03:21:29 24 4
gpt4 key购买 nike

我希望将像素数据从服务器传输到 android 程序。在服务器上,像素数据采用 RGBA 格式,每种颜色/透明度一个字节。不幸的是,在 android 上,相应的像素格式是 ARGB,这意味着 alpha channel 出现在颜色数据之前,而不是像在服务器上那样出现在颜色数据之后。我担心在服务器上将 RGBA 数据改组为 ARGB 格式会太慢,所以我希望找到另一种解决方法。顺便说一句,服务器是用python编写的。我正在使用此处提供的功能捕获屏幕数据:Image.frombuffer with 16-bit image data .如果有一种方法可以使用这种方法(或其他方法)以 ARGB 格式甚至 RGB_565 抓取屏幕截图,我也很想听听。

我想到的解决此问题的一个技巧是在 canvas.drawbitmap(int[], ...) 上使用 isPreMultiplied 标志,然后仅从服务器发送 RGB 字节。然后我可以在 Android 设备上将 RGB 位重新组合为整数并将其发送到 drawbitmap,完全忽略 alpha channel 。

然而,这给我带来了另一个问题。整数由 4 个字节组成,我的 byte[] 数组(RGB 值)中有一个 3 个字节的序列。我使用了这里提出的一些解决方案:byte array to Int Array在传输 RGBA 数据时将 byte[] 转换为 int[]。但现在它只是 3 个字节序列,我不确定如何快速将它转换为整数。我希望接近实时的图像更新,所以我需要一种快速完成此操作的方法。有什么想法吗?

最佳答案

int rgbInt = byteArray[0] << 16 + byteArray[1] << 8 + byteArray[2];    
// not sure these are in the correct order, you may have to swap the indexes around.

您可能还需要包括

+ 0xFF << 24

将 alpha 值设置为不透明。

关于Android转3序列byte[]转int[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com