我有一个扫描的原始数据,每个RGB通道包含16位,因此,每像素数据为48位。我的后端代码只能处理RGB的每通道数据8位。
现在,我需要以某种方式将这些16位(每个通道)映射到8位(该通道)。我尝试了几件事,但是,它们都是随机性的:
我也尝试了一种映射技术,这种技术似乎一开始就是预感,但后来证明是错误的:
我将16位数据分成256个相等放置的块,每个块对应于0-255范围内的数字。这样,所有16位数字将与8位数字成1-1对应。但是,这也失败了。
我第一次尝试使用的代码非常简单:
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位原始数据。
有什么建议吗?可能有一些标准的方法来转换它,我似乎无法找到。