16bit 转 32bit color 颜色

2385阅读 0评论2010-10-05 bo_00
分类:LINUX

所用到的

16bit颜色是 2554 形式:
 2bit
 alpha

32bit颜色是:
 8bit
 alpha

color16 to color32


unsigned long
color16_to_color32(unsigned long c16)
{
  unsigned long r, g, b, a;
  unsigned long pixval;

  if (0xFFFF < c16) {
    return c16;
  }

  a = (((c16 & 0xC000) >> 14) & 0x03) * 0xFF / 0x03; //alpha
  r = (((c16 & 0x1E00) >> 9) & 0x0F) * 0xFF / 0x0F;
  g = (((c16 & 0x01F0) >> 4) & 0x1F) * 0xFF / 0x1F;
  b = (((c16 & 0x000F) ) & 0x0F) * 0xFF / 0x0F;
  pixval = (a << 24) | (r << 16) | (g << 8) | b;
  return pixval;
}


其实,我觉得这个转换关系,是由自己的程序自定义的。
也就是说,只要确定转换关系,那么你的color16的值,就会对应在一个color32bit上。
也就是说,不是所有的软件都会得到同样的color32bit.(个人认为)
上一篇:C语言中的内存地址分配模型
下一篇:反汇编工具