Funktion Float Wert nach RGB.

Hier eine Funktion um z.B. einen Temperaturwert in RGB Werte um zu wandeln.


<?
function convertRGB($float)
{
//Maximalwert festlegen
// Beispiel 25°C
// Anzahl der Stufen / Maximalwert
// = 1020 / 25
// Faktor 40.8
$farbe = round(40.8 * $float); 
//
if ($farbe < 1)
$farbe = 0;
if ($farbe > 1020)
$farbe = 1020;
if ($farbe <= 510)
{
$rot = 0;
if ($farbe <= 255)
{
$gruen = 0 + $farbe;
$blau = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$blau = 255 - $farbe;
$gruen = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$blau = 255 - $farbe;
$grun = 255;
}
}

if ($farbe > 510)
{
$farbe = $farbe - 510;
$blau = 0;
if ($farbe <= 255)
{
$rot = 0 + $farbe;
$gruen = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$gruen = 255 - $farbe;
$rot = 255;
}
}
return array($rot,$gruen,$blau);
}
?>

Aufruf über:


$rgb = convertRGB($temperatur);
print_r ($rgb);

Im Anhang jetzt ein Bild mit dem möglichen Farbverlauf.
Und eines als Anwendung Temperaturverlauf der letzten 4 Tage.

Schöne Grüße
Thomas

Ich wills gerade mal ausprobieren.

Gib mir mal einen Tip, wie ich die Datenreihe als Bild darstelle.

Hallo,

hier noch eine Variante wo man die Min/Max Werte mit Übergeben kann.


<?
function convertRGB($min, $max, $float)
{
$float = $float - $min;
$faktor = 1020 / ($max - $min);
$farbe = round($faktor * $float);
//
if ($farbe < 1)
$farbe = 0;
if ($farbe > 1020)
$farbe = 1020;
if ($farbe <= 510)
{
$rot = 0;
if ($farbe <= 255)
{
$gruen = 0 + $farbe;
$blau = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$blau = 255 - $farbe;
$gruen = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$blau = 255 - $farbe;
$grun = 255;
}
}

if ($farbe > 510)
{
$farbe = $farbe - 510;
$blau = 0;
if ($farbe <= 255)
{
$rot = 0 + $farbe;
$gruen = 255;
}
if ($farbe > 255)
{
$farbe = $farbe - 255;
$gruen = 255 - $farbe;
$rot = 255;
}
}
return array($rot,$gruen,$blau);
}
?>

Ausruf:


$rgb = convertRGB($min, $max, $temperatur); 
print_r ($rgb);  

Beispiele:


$rgb = convertRGB(-25, -10, $temperatur); // Gefrieschrank
$rgb = convertRGB(0, 25, $temperatur); // Aussentemperatur
$rgb = convertRGB(0, 100, $helligkeit); // Prozent

Fragen und Anregungen bitte hier:
http://www.ip-symcon.de/forum/f52/q-funktion-float-wert-rgb-18624/#post164496

Schöne Grüße
Thomas