RGB16 转换Rgb32



unsigned long rgb16_to_rgb32(unsigned short a) { 
/* 1. Extract the red, green and blue values */ 
/* from rrrr rggg gggb bbbb */ 
unsigned long r = (a & 0xF800) >11; 
unsigned long g = (a & 0x07E0) >5; 
unsigned long b = (a & 0x001F); 
/* 2. Convert them to 0-255 range: There is more than one way. You can just shift them left: to 00000000 rrrrr000 gggggg00 bbbbb000 
r <<= 3; 
g <<= 2;
b <<= 3; 
 But that means your image will be slightly dark and off-colour as white 0xFFFF 
 will convert to F8,FC,F8 So instead you can scale by multiply and divide: 
 */ 
 r = r * 255 / 31; 
 g = g * 255 / 63; 
 b = b * 255 / 31; 
 /* This ensures 31/31 converts to 255/255 */
 /* 3. Construct your 32-bit format (this is 0RGB):*/ 
 return (r << 16) | (g << 8) | b; 
 /* Or for BGR0: return (r << 8) | (g << 16) | (b << 24); */ 
 
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值