软件注册站
热情软件屋

 
如何提取16位的彩色图像的rgb各个分量
编号: QA004841    
建立日期: 2004年1月3日 最后修改日期: 2004年1月3日
所属类别: C/C++ - 图形、图象
   
    操作系统: win2000
    编程工具: c语言
    问题: 如何提取16位的彩色图像的rgb各个分量?它的三个分量占2个字节,不像24位图像占3个字节。rgb在内存中的分配比例为5:6:5。
    水平: 刚入门(martial)
   
    可以使用“或”、“与”、移位等二进制运算来达到你的目的。
    假如有一个16bit的颜色值,其各分量如下:
    red: 5位, 00011(二进制,下同)
    green: 6位, 001011
    blue: 5位, 00101
    其组成的16位数为(二进制):
    0001 1001 0110 0101
    如果要获得这个16位的R分量,可以这样
    0001 1001 0110 0101 &
    1111 1000 0000 0000
    ---------------------
    0001 1000 0000 0000
    然后将得到的0001 1000 0000 0000向右移11位就可以了。
    这样如果我们的16位像素为pixel,获得其RGB分量的方法如下:
    BYTE red, green, blue;
    
red = ((pixel & 0xF800) >> 11);
    
green = ((pixel & 0x07E0) >> 5);
    
blue = pixel & 0x001F;
    

    反过来,如果要组成一个16位数,可以这样:
     Pixel = (r << 11) | (g << 5) | b;

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 图形、图象, picture, graph, image, draw

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio