首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将int转换为RGB。PHP和HTML/CSS中的可视化

将int转换为RGB。PHP和HTML/CSS中的可视化
EN

Stack Overflow用户
提问于 2011-10-17 17:43:20
回答 2查看 546关注 0票数 0

我正在尝试将网格上的数据可视化,其中的单元格值实际上是由颜色表示的。红色代表高,蓝色代表低。我天真地认为PHPdechex()可以帮助我,只需获取十六进制的int等效值并将其用作CSS中的background-color (我确实对小值应用了必要的0填充)。

但这并不能完全得到我想要的。有没有一种算法可以让我正确地将其可视化?红色代表高,蓝色代表低。

我当前的代码是:

代码语言:javascript
复制
<?php
    $dec = (int) $map[$y][$x]["total_score"];
    $hex = dechex($dec);
    $color = ($dec <= 65535) ? (($dec) ? "00$hex" : "ffffff") : 
                               (($dec <= 1048575) ? ("0$hex") : $hex);
?>

注意它的作用:

十进制的ff0000ff00ff小,但在颜色上,前者显示红色,后者显示紫色。我希望红色代表非常高的小数,蓝色代表非常低的小数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-17 18:03:38

我认为RGB不是最好的颜色模型。我选择受现代浏览器支持的HSLcolor: hsl(0.5, 0.5, 0.5),并且很容易转换为RGB。

HSL让你很容易定义颜色的饱和度和明度,以及颜色本身。蓝色是240度,红色是360度,所以你所要做的就是将“低”映射到240,“高”映射到360,所有中值映射到240-360范围。

票数 0
EN

Stack Overflow用户

发布于 2011-10-17 17:58:59

将红色替换为绿色,并通过0xFF00FF遮罩删除绿色,以便仅保留红色和蓝色。

代码语言:javascript
复制
$color = $your_decimal_number_you_want_to_colorize; // for example $color is 0x00F777
$color = $color << 8; // color is 0xF77700
$color = $color + ($color & 0x00FF00); // color is 0xF77777
$color = $color & 0xFF00FF; // color is 0xF70077

使用上面的代码,如果是$a > $b,那么$a将比$b更红。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7791948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档