int 12bit_con_8bit(unsigned char *bic,unsigned short *bo,unsigned int img_len, int bit_len,int flag)
{
unsigned int i;
int data;
int eff = 8;
unsigned int n = 0;
int mask = 0;
for (i = 0; i < bit_len; i++)
mask |= 1 << i;
#if 1
for (i = 0; i < img_len; i++)
{
data = bic[n] >> (8 - eff);
while (bit_len > eff)
{
n++;
data += ((int)(bic[n])) << eff;
eff += 8;
}
if (flag == 2)
bo[i] = (data & mask) * 28;
else
{
bo[i] = (data & mask) << (16 - bit_len);
}
if (bo[i] & 0x8000)
bo[i] = 0xfff0;
else
bo[i] = bo[i] << 1;
eff -= bit_len;
if (eff == 0)
{
n++;
eff = 8;
}
}
#endif
return 1;
}
uint8_t *imagein= (uint8_t *)malloc(w*h+3);//数据本身是12位 图像的宽度*高度
unsigned short *imageout1 = (unsigned short *)malloc(w*h * sizeof(unsigned short)+10 * 4);
12bit_con_8bit(imagein, imageout1, w*h, 8, 0);