RGB颜,代码和十六进制

RGB彩模式(也翻译为红绿蓝,比较少用)是工业界的一种颜标准,是通过对红(R)、绿(G)、蓝(B)三个颜通道的变化以及它们相互之间的叠加来得到各式各样的颜的,RGB即是代表红、绿、蓝三个通道的颜,这个标准几乎包括了人类视力所能感知的所有颜,是目前运用最广的颜系统之一。
RGB模式使用RGB模型为图像中每一个像素RGB分量分配一个0~255范围内的强度值。RGB图像只使用三种颜,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜。
 
RGB 模式下,每种 RGB 成分都可使用从 0(黑)到 255(白)的值。 例如,亮红使用 R 255G 0 B 0 当所有三种成分值相等时,产生灰阴影。 当所有成分的值均为 255 时,结果是纯白;当该值为 0 时,结果是纯黑。
应用
  目前的显示器大都是采用了RGB颜标准,在显示器上,是通过电子打在屏幕的红、绿、蓝三发光极上来产生彩的,目前的电脑一般都能显示32位颜,约有一百万种以上的颜。
  在led 领域利用三合一点阵全彩技术, 即在一个发光单元里由RGB三晶片组成全彩像素。 随着这一技术的不断成熟,led显示技术会给人们带来更加丰富真实的彩感受。
原理
  RGB是从颜发光的原理来设计定的,通俗点说它的颜混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。
 
有光可被无光冲淡并变亮。如蓝光与白光相遇,结果是产生更加明亮的浅蓝光。知道它的混合原理后,在软件中设定颜就容易理解了。 
  红、绿、蓝三盏灯的叠加情况,中心三最亮的叠加区为白,加法混合的特点:越叠加越明亮。
  红、绿、蓝三个颜通道每种各分为255阶亮度,在0最弱——是关掉的,而在255最亮。当三数值相同时为无彩的灰度,而三都为255时为最亮的白,都为0时为黑。 
  RGB 颜称为加成,因为您通过将 RG B 添加在一起(即所有光线反射回眼睛)可产生白。 加成用于照明光、电视计算机显示器。 例如,显示器通过红、绿和蓝荧光粉发射光线产生颜。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三光在不同比例和强度上的混合。 这些颜若发生重叠,则产生青、洋红和黄。
编辑本段RGB语法
  ( redgreenblue ) 
  参数redinteger类型,指定颜中的红分量强度,有效值在0255之间;greeninteger类型,指定颜中的绿分量强度,有效值在0255之间;blueinteger类型,指定颜中的蓝分量强度,有效值在0255之间返回值Long函数执行成功时返回由指定分量确定的颜,用长整数表示。发生错误时返回-1。如果任何参数的值为NULLRGB()函数返回NULL
  用法RGB()函数使用下述公式计算表示颜的长整数:65536 *Blue + 256 * Green+Red其中,Blue代表蓝分量,Green代表绿分量,Red代表红分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。
编辑本段RGB格式
  对一种颜进行编码的方法统称为颜空间。用最简单的话说,世界上任何一种颜的颜空间都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜空间的一种。采用这种编码方法,每种颜都可用三个变量来表示-红绿以及蓝的强度。记录及显示彩图像时,RGB是最常见的一种方案。但是,它缺乏与早期黑白显示系统的良好兼容性。因此,许多电子电器厂商普遍采用的做法是,将RGB转换成YUV
空同,以维持兼容,再根据需要换回RGB格式,以便在电脑显示器上显示彩图形。 
  由于网页(WEB)是基于计算机浏览器开发的媒体,所以颜以光学颜RGB(红、绿、蓝)为主。 网页颜是以16进制代码表示,一般格式为#DEFABC (字母范围从A-F,数字从0-9 ;如黑,在网页代码中便是:#000000(css编写中可简写为#000)。当颜代码为#AABB11时,可以简写为#AB1表示,如#135#113355表示同样的颜。
格式简介
  RGB1RGB4RGB8都是调板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着一个调板(定义一系列颜)。它们的图像数据并不是真正的颜值,而是当前像素颜值在调板中的索引。以RGB12位图)为例,比如它的调板中定义的两种颜值依次为0x000000(黑)和0xFFFFFF(白),那么图像数据001101010111…(每个像素用1位表示)表示对应各像素的颜为:黑黑白白黑白黑白黑白白白
RGB565
  RGB565使用16位表示一个像素,这16位中的5位用于R6位用于G5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:
  高字节 低字节
  R R R R R G G G G G G B B B B B
  可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
  #define RGB565_MASK_RED 0xF800
  #define RGB565_MASK_GREEN 0x07E0
  #define RGB565_MASK_BLUE 0x001F
蓝组合
  R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31
  G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
  B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31
  #define RGB(r,g,b) (unsigned int)( (r|0x08 << 11) | (g|0x08 << 6) | b|0x08 )
  #define RGB(r,g,b) (unsigned int)( (r|0x08 << 10) | (g|0x08 << 5) | b|0x08 )
  该代码可以解决24位与16位相互转换的问题
RGB555
  RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
  高字节 低字节
  X R R R R G G G G G B B B B B X表示不用,可以忽略)
  可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
  #define RGB555_MASK_RED 0x7C00
  #define RGB555_MASK_GREEN 0x03E0
  #define RGB555_MASK_BLUE 0x001F
  R = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31
  G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
  B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31
RGB24
  RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:
  typedef struct tagRGBTRIPLE {
  BYTE rgbtBlue; // 蓝分量
  BYTE rgbtGreen; // 绿分量
  BYTE rgbtRed; // 红分量
  } RGBTRIPLE;
RGB32
  RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的RGB32。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:

本文发布于:2024-09-22 10:31:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/378662.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:颜色   表示   分量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议