PHP生成热点图,有两大要点:
1. 点需要有模糊效果。
2. 点越多,颜色需要越鲜艳。
借用http://www.labsmedia.com/clickheat/的算法,第一点比较好理解,第二点可以把RGB值和画图板里的颜色对比。
clickheat--version1:
<?php
define('CLICKHEAT_LOW_COLOR', 0);
define('CLICKHEAT_HIGH_COLOR', 255);
define('CLICKHEAT_GREY_COLOR', 240);
define('CLICKHEAT_ALPHA', 60);
for ($i = 0; $i < 110; $i++)
{
/** Red */
if ($i < 10)
{
$red = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / 10;
}
elseif ($i < 60)
{
$red = CLICKHEAT_LOW_COLOR;
}
elseif ($i < 85)
{
$red = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 60) / 35;
}
else
{
$red = CLICKHEAT_HIGH_COLOR;
}
/** Green */
if ($i < 10)
{
$green = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / 10;
}
elseif ($i < 35)
{
$green = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * $i / 35;
}
elseif ($i < 85)
{
$green = CLICKHEAT_HIGH_COLOR;
}
else
{
$green = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 85) / 35;
}
/** Blue */
if ($i < 10)
{
$blue = CLICKHEAT_GREY_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_GREY_COLOR) * $i / 10;
}
elseif ($i < 35)
{
$blue = CLICKHEAT_HIGH_COLOR;
}
elseif ($i < 60)
{
$blue = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 35) / 35;
}
else
{
$blue = CLICKHEAT_LOW_COLOR;
}
echo "R:".(int)$red."; G:".(int)$green."; B:".(int)$blue;
echo "<br />";
}
?>
clickheat--version18:
<?php
$colors = array(50, 70, 90, 110, 120);
$low = 0;
$high = 255;
$grey = 240;
for ($i = 0; $i < 128; $i++)
{
/** Red */
if ($i < $colors[0])
{
$R = $grey + ($low - $grey) * $i / $colors[0];
}
elseif ($i < $colors[2])
{
$R = $low;
}
elseif ($i < $colors[3])
{
$R = $low + ($high - $low) * ($i - $colors[2]) / ($colors[3] - $colors[2]);
}
else
{
$R = $high;
}
/** Green */
if ($i < $colors[0])
{
$G = $grey + ($low - $grey) * $i / $colors[0];
}
elseif ($i < $colors[1])
{
$G = $low + ($high - $low) * ($i - $colors[0]) / ($colors[1] - $colors[0]);
}
elseif ($i < $colors[3])
{
$G = $high;
}
else
{
$G = $high - ($high - $low) * ($i - $colors[3]) / (127 - $colors[3]);
}
/** Blue */
if ($i < $colors[0])
{
$B = $grey + ($high - $grey) * $i / $colors[0];
}
elseif ($i < $colors[1])
{
$B = $high;
}
elseif ($i < $colors[2])
{
$B = $high - ($high - $low) * ($i - $colors[1]) / ($colors[2] - $colors[1]);
}
else
{
$B = $low;
}
echo "R:".(int)$R."; G:".(int)$G."; B:".(int)$B;
echo "<br />";
}
?>
分享到:
相关推荐
Matlab-RGB-颜色对照表(0-1之间取值).xls
LongToRGB HexToRGB 颜色十进制转换为RGB 颜色十六进制转换为RGB (转十进制再转为RGB) 二进制,十进制,十六进制 之间转换
220920 - ECCV 2022 - 从单目RGB图像中进行类别级6D物体姿态估计 220920 - ECCV 2022 - 从单目RGB图像中进行类别级6D物体姿态估计
了解图像颜色空间的转换关系。 了解图像的文件结构。 实验内容 完成如下颜色空间的转换。(4 Points) RGB -> YIQ RGB -> HSI RGB -> YCbCr RGB -> XYZ 选做: 自己实现对 BMP 文件头的读取,并解析 BMP 图像文件。 ...
JDL-1988RGB-16*16-HUB41制版说明: 1.FR-4,TOP层绿油白字,BOT层绿油白字,喷锡。 2.所有的过孔必须阻焊处理。 3.参数:最小间距: 0.254mm 最小孔径: 0.5mm 最小线径: 0.3mm 板 层: 双面板 板 厚: 1.6mm ...
(4 Points) RGB -> YIQ RGB -> HSI RGB -> YCbCr RGB -> XYZ 选做: 自己实现对 BMP 文件头的读取,并解析 BMP 图像文件。 (2.5 Points) 补充说明 程序从命令行中读取文件路径,并输出 4 个文件,文件名如下: ...
RGB颜色对照表,各种颜色用英文和十六进制表示,我们开发的时候用的到!!
彩色图像处理,例1考虑生成一幅128*128的RGB图像,例2将一幅RGB图像转换到CMY空间,例3将一幅三原色图像从RGB空间转换到HSI空间
RGB数据生成BMP位图(其中包括RGB数组随机生成),关于更RGB数据处理和图像处理,请联系作者
传统的图像阈值分割算法是将彩色图像转换为灰度图像再进行分割。通过分析RGB颜色空间的特点,本文提出 基于RGB颜色空间的阈值分割算法,
把彩色图像由rgb空间转为hsv空间,经过同态滤波处理后,再逆变换至rgb空间。
(4 Points) RGB -> YIQ RGB -> HSI RGB -> YCbCr RGB -> XYZ 选做: 自己实现对 BMP 文件头的读取,并解析 BMP 图像文件。 (2.5 Points) 补充说明 程序从命令行中读取文件路径,并输出 4 个文件,文件名如下: ...
基于神经网络的RGB-D图像分割,可在代码基础上修改,进行二次开发.
MAXDISTCOLOR 生成最大不同颜色的 RGB 颜色图。 MAXDISTCOLOR 有两个必需的输入参数: 1.所需的颜色数量。 2.从sRGB转换到统一色彩空间的函数句柄(例如CIELAB、DIN99、CAM02-UCS、CAM16-UCS、OSA-UCS等)。 可选...
ui-color, 将十六进制 & RGB颜色转换为 UIColor,用于 Objective C & Swift UIColor.xyz 网站:http://www.uicolor.xyz/UIColor是一个网站,用于将十六进制 & RGB颜色转换为英镑,以英镑为代价,以英镑为代价,以...
常见金属颜色色彩RGB数据值如何根据RGB值来判断这是种什么颜色?.
MATLAB里的颜色模型之间转换,HSV模型转换为RGB模型,NTSC模型转换为RGB模型
rgb空间与hsi空间相互转换,相当好用哟
不知道如何选择rgb颜色?让编程来解决,随机生成RGB颜色,调以使用