如何将RGB 48位原始数据转换为RGB 24位原始数据

时间:2017-07-13 06:54:03

标签: image rgb pixel

我有一个扫描的原始数据,每个RGB通道包含16位,因此,每像素数据为48位。我的后端代码只能处理RGB的每通道数据8位。

现在,我需要以某种方式将这些16位(每个通道)映射到8位(该通道)。我尝试了几件事,但是,它们都是随机性的:

  1. 我尝试从每个频道中删除最不重要的字节。
  2. 我也尝试了一种映射技术,这种技术似乎一开始就是预感,但后来证明是错误的:

    我将16位数据分成256个相等放置的块,每个块对应于0-255范围内的数字。这样,所有16位数字将与8位数字成1-1对应。但是,这也失败了。

  3. 我第一次尝试使用的代码非常简单:

    char* new_data = (char *) malloc(data.dataSize / 2);
    for(int i=0, j=0; i<data.dataSize; i+=2, j++)
        new_data[j] = temp[i];
    

    temp包含16位原始数据,new_data将包含8位原始数据。

    有什么建议吗?可能有一些标准的方法来转换它,我似乎无法找到。

0 个答案:

没有答案