Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450289
  • 博文数量: 88
  • 博客积分: 2677
  • 博客等级: 少校
  • 技术积分: 893
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-13 08:01
文章分类

全部博文(88)

文章存档

2017年(3)

2016年(1)

2012年(4)

2011年(4)

2010年(57)

2009年(19)

我的朋友

分类: LINUX

2010-10-05 11:31:37

所用到的

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.(个人认为)
阅读(2409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~