首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次HEXRGB互换算法的思考及应用

比如从HEX值转化到RGB值, 亦或者是从RGB转换HEX值, 这块在PhotoShop等设计软件中非常常见, 在做类似于画板, 设计类的IDE的时候也经常会用到它们的互相转换, 还有一种场景是,为了满足老板对高大上特效的要求...所以笔者在这里就分享一下HEXRGB之间相互转换的原理算法, 并且实现随机生成HEX随机生成RGB值的函数,最后带着大家深度理解掌握颜色领域的应用. 1 文章摘要 HEX与16进制 HEXRGB...在计算机基础中我们都知道如何将二进制转化为十进制, 10进制数转换成16进制的方法,转换为2进制的方法类似,唯一的变化:除数由2变成16....) 以上就是掌握HEXRGB互相转换的核心知识点, 接下来我们来看看互相转换的算法实现. 3 HEXRGB算法 从 HEX 颜色值转换RGB 颜色值,本质上是HEX的第一位数乘以16加上第二位数...举个例子: 转换颜色为 #1821DD的 HEX 值到 RGB 值. #1821DD ----------> rgb: 18 ----> r: r的值就是: 1 * 16 + 8 = 24 21 -

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

C语言:十六进制(HEX)浮点类型(float、double)转换

目录 1、浮点类型转换为十六进制 方法1:用地址用指针 方法2:用共用体 方法3: 使用memcpy 2、十六进制转换为浮点类型 ---- 近日在研究Modbus协议的时候遇到这样一个情况:使用ModScan32...软件,可将HEX浮点类型转换,如下所示: ?...那么如何在程序设计中实现十六进制浮点类型转换呢?...C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f...float *p = (float*)pMem; printf("%g\r\n",*p); return 0; } 输出结果: 120.45 最后为各位分享一个十分便利的十六进制浮点类型互相转换的小工具

4.5K20

【CSS】271- RGB、HSL、Hex网页色彩,看完这篇全懂了

先来说说RGB色彩( RGB color ) RGB色彩在网页设计时的标记方式是RGB(0~255 , 0~255, 0~255),其中括弧内以逗号分隔的三组数值恰好就是(R, G, B) 的色彩数值,...HSL color 亮度/明度(Lightness) 如果我们把上面这张HSL 色彩的H(Hue) 平面图形的亮度(Lightness)转换成一个立体的圆柱体时,你就能看到如下图所示 ?...最后说说网页16进位色彩( hex color ) 16进位码简写为Hex,在HTML&CSS中16进位码的色彩标示是由一个井号(#)开始,接着后面带6个数字来表示,此色彩标示方式对许多设计师来说太长用到但却又有点摸不着头绪...hex 16进位色彩表示方式 第二个问题则是这16进位码的色彩标示怎么标示的?基本上HTML & CSS中的16进位码色彩标示共分成三组数字,每两码就表示一个色彩,如下图所示 ?...Hex-color 从图片中可见到16进位码中6码数字的前两码代表的是RGB色彩中的R色,而中间的两码数字代表的是G色,后两码则是B色,如果我们把16进位码当作是发光的强度来看,#000000就表示RGB

1.2K20

RGB到HSV的转换详解

RGB到HSV的转换详解 1RGB色彩空间 在图像处理中,最常见的就是RGB色彩模型。在RGB模型中,每种颜色出现在红、绿、蓝的原色光谱分量中。该模型基于笛卡尔坐标系。...如图1所示,RGB原色值位于3个角上;二次色青色,深红色黄色位于另外三个角上,黑色位于原点处,白色位于里原点最远的角上。 ? 图1 RGB色彩模型 图1左 RGB彩色立方体示意图。...用RGB来理解色彩、深浅、明暗变化: 色彩变化:三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线 深浅变化:RGB顶点CMY顶点到原点白色顶点的中轴线的距离 明暗变化:中轴线的点的位置,到原点...图2 HSV色彩模型 3 RGB色彩空间转HSV ? 4 HSV在图像处理应用 HSV在用于指定颜色分割时,有比较大的作用。 HS分量代表了色彩信息。...HSV图像(RGB转换后)

2.7K10

OpenGL YUV RGB 图像转换出现偏色问题怎么解决?

省流版 直接贴出来更精确的转换公式: vec3 rgb2yuv(vec3 rgb) { float y = 0.257 * rgb.r + 0.504 * rgb.g + 0.098 * rgb.b... yuv2rgb转换是可逆的,也就是说,它们可以完美地还原图像,不会引入信息损失,类似于纯粹的数学运算 1+2=3,3-2=1 。...下面来做个试验,利用上面的公式,我们对一张图片反复做多次 rgb2yuv yuv2rgb 转换,然后看下最终图像颜色的变化。...yuv rgb 的来回转换,效果如下,这时肉眼已经无法区分颜色的误差。...N=4000,做 4000 次 yuv rgb 的来回转换放大误差,效果如下,这时由于误差不断累计,出现了明显的偏色。不过,转换 4000 次这种操作在实际情况下不太可能出现。

53620

颜色空间RGB与HSV(HSL)的转换

有时候美术须要程序帮助调整饱和度来达到特定风格的渲染效果,这时候就须要转换颜色空间了。...每一个独特的 RGB 设备都伴随着一个独特的 HSL HSV 空间。可是 (h, s, l) 或 (h, s, v) 三元组在被约束于特定 RGB 空间比方 sRGB 的时候就变成明白的了。...所以一般不建议做在 HSV 坐标物理光性质如波长振幅之间的直接比較。 [编辑]形式定义 HSL HSV 在数学上定义为在 RGB 空间中的颜色的 R, G B 的坐标的变换。...[编辑]从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 各自是一个颜色的红、绿蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g b 中的最大者。...HSV 颜色的 s v 的值定义例如以下: [编辑]从 HSL 到 RGB转换 给定 HSL 空间中的 (h, s, l) 值定义的一个颜色,带有 h 在指示色相角度的值域 [0, 360

3.1K10

颜色空间系列1: RGBCIEXYZ颜色空间的转换及相关优化

更过具体的关于XYZ空间的理论解释可见:点击打开链接 本文的重点是如何优化这个RGBXYZ相互转换的过程。...1,则X的取值范围也必然在[ 0,255 ]之间,因此我们可以考虑等比修改各系数,使其之和等于1,这样就做到了XYZRGB在同等范围的映射,因此第一行的系数应分别修改为 [0.412453 0.357580...到LAB空间的转换,就可以发现Cv就是用的上述矩阵先将RGB转到XYZ,再由XYZ转为LAB的。...由以上数式可以看出RGBXYZ颜色空间的转换时线性的,因此,两个系数矩阵之间的成绩必为一个E矩阵(对角线为1,其他元素都为0),读者可以用matlab测试下。...由于各小数的存在,理论上说,RGB颜色空间的颜色对应的XYZ分量的数值一般都为浮点数,之前说过经过调整系数矩阵后其有效范围在[0,255]之间,这RGB的范围是一致的,因此我们更感兴趣的可能是用整数表示

3K20

颜色空间系列3: RGBYCbCr颜色空间的转换及优化算法

RGB空间之间的相互转换公式在网上也有多种,我们这里取http://en.wikipedia.org/wiki/YCbCr 描述的JPG转换时使用的计算公式:   JPEG conversion   ...上述公式的主要优点是转换后的各分量的范围也在0到255之间,因此用 byte类型的变量即可容纳新的颜色空间。...要避免浮点运算带来的速度瓶颈,这里同样可以用 颜色空间系列1: RGBCIEXYZ颜色空间的转换及相关优化 文章中同样的优化技巧。...比如我们比较下注释部分上述代码的反编译码: 注释掉的部分的反编译码: Y = (YCbCrYRI * Red + YCbCrYGI * Green + YCbCrYBI...照例给出一些转换效果: ? YCbCr综合图: ? Y分量: ? Cb分量: ?

1.5K30

颜色空间系列2: RGBCIELAB颜色空间的转换及优化算法

因此可以被用来通过修改 a b 分量的输色阶来做精确的颜色平衡,或使用 L 分量来调整亮度对比。...关于CIELAB颜色空间的更多原理说明,可见:http://en.wikipedia.org/wiki/Lab_color_space 本文研究的重点是RGBLAB之间的快速转换过程。...首先,RGBLAB之间没有直接的转换公式,其必须用通道XYZ颜色空间作为中间层,关于RGBXYZ颜色空间的转换及优化,详见颜色空间系列1。...即使这样映射后,一般来说,LAB各分量的结果仍为浮点数,这个RGB不同,但是在很多情况下,为了速度计效率,我们这需结果的取整部分,得到类似于RGB空间的布局。...注意,我这里说的转换有个前期条件,即LAB的数据是用类似于RGB空间的布局表达的,也就是说LAB各元素为byte类型。

3.2K20

YUVRGB存储规则

前言 我们开发平常图片的数据都是RGB,但是设计视频相关的都会使用到YUV格式,为什么呢? YUV是电视信号的格式,为了同时兼容黑白彩色,只有Y就是黑白,加上UV就是彩色。...YUV采样可以大大降低传输数据的大小,以YUV420为例就是RGB的一半。 RGB/BGR 每一个点都是由三个byte组成,分别存储R、G、B,值范围是[0-255]。...而恢复为RGB的时候可以几个Y分量共用U、V分量来恢复为RGB。 这样全采样的YUV其实跟RGB所需存储空间一样了,而这种采样方式就是 YUV 4:4:4 。...在同行的像素上, U V 分量分别 交替 进行采样; YUV 4:2:0【重点】 在所有像素上,Y分量全部采样。 在(偶数行), U 分量 间隔 进行采样,而不采样V分量。...这种方式就不像上面那种那么直白了,先用数组表示吧,注意是422采样模式,所以U、V数组长度也变化了 YUYV YUYV YUYV YUYV 如上所示,因为YUV的比例是2:1:1 ,所以取两个Y元素就需要分别取一个UV

85220
领券