在Javascript和PHP中,十进制到RGB
Decimal to RGB in Javascript and PHP
我正在尝试将十进制值转换回RGB值。
假设这是编译十进制值的公式
c = r*(255*255)+g*255+b
(例如rgb(16120,78)加起来为1071078)
如何在没有任何"溢出"的情况下求解r、g和b?
提前感谢!
使用除法、模(%
)和四舍五入:
var r = Math.floor(c / (256*256));
var g = Math.floor(c / 256) % 256;
var b = c % 256;
编辑:
halex发现了代码中255和256的使用差异。当你把组件放在一起时,你应该(正如Millie Smith所指出的)使用256而不是255:
var c = r * (256*256) + g * 256 + b;
颜色分量的值可以在0到255之间,因此需要乘以256以防止下一个分量与上一个分量重叠。
这个Github链接帮助很大,但我用这个代码编辑了代码,以解决我的一个问题:
// convert three r,g,b integers (each 0-255) to a single decimal integer (something
between 0 and ~16m)
function colourToNumber(r, g, b) {
return (r << 16) + (g << 8) + (b);
}
// convert it back again (to a string)
function numberToColour(number) {
const r = (number & 0xff0000) >> 16;
const g = (number & 0x00ff00) >> 8;
const b = (number & 0x0000ff);
//return [b, g, r];
return `rgb(${b},${g},${r})`;
}
我编辑的代码使RGB正确返回,就像我设置的颜色一样
我的例子:
小数中的颜色为:11665407这是黄色
小数中的颜色为:11665329这是绿色
请使用以下示例测试展位代码:stackblitz示例
对于初学者来说,计算十进制值的公式看起来很错误。255不是16的幂(甚至不是2);如果你想左移一个十六进制数字,就像在十进制中乘以10的幂一样,你想乘以16^n,其中n是左移的位数。
这是我们新的RGB到十进制公式:
c = r * 16^4 + g * 16^2 + b
因此,假设我们有c,RGB颜色代码的十进制表示,我们求解r、g和b:
b = c % 256
g_0 = (c % 65536 - b)
r_0 = c - g_0 - b
g = g_0 / 256
r = r_0 / 65536
这些都是整数运算,所以它们应该很快,但我不能向你保证解释器会以这种方式处理它们。作为一个函数:
function c_to_rgb(c) {
var b = c % 256,
g_0 = (c % 65536 - b),
r_0 = c - g_0 - b,
g = g_0 / 256,
r = r_0 / 65536;
return [r, g, b];
}
I managed to solve it that way
getRGBFromDecimal(number) {
var b = Math.floor(number / (256*256));
var g = Math.floor(number / 256) % 256;
var r = number % 256;
return `RGB(${r},${g},${b})`;
}
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何使用RGB或HSL显示HWB/HSB/CMYK通道
- 如何避免X轴显示十进制值
- 从2D RGB阵列创建图像
- 构建画布RGB值的2D阵列
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- 文本框仅接受十进制值,并且应在十进制后追加2个零
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 如何将二进制分数转换为十进制
- 在Javascript和PHP中,十进制到RGB
- 在javascript中接受十进制数字的Regex
- 如何生成十进制数
- 如何根据定义的十进制增量验证值
- 在十进制范围内搜索
- 如何使用javascript验证在表单输入中避免负值、浮点值和十进制值
- 将一个十进制数转换成八分之一的分数
- JavaScript basis 是 math.pow 函数中的十进制数
- 如何使用 JavaScript 自动设置十进制值
- 将 RGB 颜色值转换为十进制
- 如何在JavaScript中将RGB十进制转换为十六进制颜色