RGB颜色与BGR颜色的转换问题
2012-09-27 13:24
459 查看
今天在解决一个bug的时候发现颜色始终对不上,调试……,发现问题,API得到的是BGR颜色,我要把他转换成RGB颜色。
先说名一下BGR颜色,像素的显示格式分为4种:
PAL_RGB,PAL_BGR,PAL_MASKED,PAL_INDEXED,
PAL_RGB:他的类型是unsignedlong,格式0x00BBGGRR,他和PALETTEENTRY结构是一样的。
PAL_BGR:他的类型是unsignedlong,格式0x00RRGGBB,他和RGBQUAD结构是一样的。
PAL_MASKED:主要是15和16bpp。也可以24,32.
PAL_INDEXED:1,2,4或者8bpp。
下面就来说一下怎么相互转换。一开始的时候想用按位运算的办法,本人比较懒,不想写那么多代码,后来发现一个简单的办法。^_^,从MSDN上看到的。代码如下:
unsignedlongulGreen=(srcValue&aSrcMask[1])<<anSrcShift[1];
unsignedlongulBlue=(srcValue&aSrcMask[2])<<anSrcShift[2];
ulRed|=ulRed>>anSrcBits[0];
ulGreen|=ulGreen>>anSrcBits[1];
ulBlue|=ulBlue>>anSrcBits[2];
unsignedlongdstValue=
((ulRed>>24))|
((ulGreen>>16)&0x0000ff00)|
((ulBlue>>8)&0x00ff0000);
相关文章推荐
- 颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法
- javascript把RGB指定颜色转换成十六进制颜色(Converting R,G,B values to HTML hex notation)
- javascript 十六进制与RGB颜色值的相互转换
- RGB颜色转换为网页颜色
- ObjectARX学习笔记(七)----RGB和CAD颜色索引之间的转换
- java后台如何将rgb与16进制颜色进行转换
- javascript实现十六进制颜色值(HEX)和RGB格式相互转换
- iOS颜色16进制值转换RGB
- objective-C不支持16进制的颜色表示,需要转换成rgb表示法(笔记)
- RGB转换网页颜色值
- 将RGB颜色转换成16bit颜色
- 十六进制颜色码转换成RGB颜色值
- [iOS 16进制颜色转换RGB](转)
- 颜色空间RGB与HSV(HSL)的转换
- 十六进制颜色值域RGB格式颜色值之间的相互转换
- 如何将24位RGB颜色转换16位RGB颜色
- rgb颜色转换(16进制->10进制)
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- RGB与YCbCr颜色空间的转换
- C#RGB颜色与16进制之间的转换