Vlatní tvorba ... ale co se týče kódu, tak to není nic čím bych se chlubil
Kód: Vybrat vše
<?php
//výstupem souboru bude obrázek
header('Content-Type: image/png');
//vypnutí error reportingu
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
//obrázek s osou
$pict = imagecreatefromjpeg("teplota.jpg");
//určení zroje dat - buď historická data, dle datumu, nebo soubor graf
if($_GET["date"]!=""){
$handle = fopen("/mnt/weather/".$_GET["date"], "r");
} else {
$handle = fopen("graf", "r");
}
//vynechání vykreslení první řádky viz níže
$i=false;
while (($line = fgets($handle)) !== false) {
// na každé řádce souboru jsou hodnoty oddělené mezerou - vysypeme je do pole
$data=explode(" ",$line);
//načtu si jednotlivé hodnoty do proměnných a zaokrouhlím je pro vykreslování
$x=round($data[0]);
$t_out=round($data[1]);
$h=round($data[2]);
$t_in=round($data[3]);
$tl=round($data[4]);
$lux=$data[8];
//první řádku nekreslím něšlo by - kreslit čáru když chybí počíteční body
if($i!=false){
//vyklesluji některé hodnoty potřebují posun y osy (-950 nebo dělím 200) - jinak to řídím výškou obrázku (101) - $x je čas ze souboru v minutách od počátku dne
$black = imagecolorallocate($pict, 0, 0, 0);
imageline($pict ,$x_old,101-($tl_old-950),$x,101-($tl-950) , $black);
$olive = imagecolorallocate($pict, 85, 97, 19);
imageline($pict ,$x_old,101-$t_in_old,$x,101-$t_in , $olive);
$red = imagecolorallocate($pict, 255, 0, 0);
imageline($pict ,$x_old,101-$t_out_old,$x,101-$t_out , $red);
$blue = imagecolorallocate($pict, 0, 0, 255);
imageline($pict ,$x_old,101-$h_old,$x,101-$h , $blue);
$violet = imagecolorallocate($pict,255,0,255);
imageline($pict ,$x_old,100-round($lux_old/200),$x,100-round($lux/200) , $violet);
}
//nastavím na že už je možno v dalším cyklu vykreslovat
$i=true;
//uložím si původní hodnoty pro bod A vykreslované úsečky
$x_old=$x;
$t_out_old=$t_out;
$h_old=$h;
$t_in_old=$t_in;
$tl_old=$tl;
$lux_old=$lux;
}
//zavřu čtení ze souboru
fclose($handle);
//vložím do grafu ještě popisky naposledy naměřených hodnot s příslušnými barvami
$green = imagecolorallocate($pict, 0, 255, 0);
imageline($pict, $x,0,$x,201,$green);
$green = imagecolorallocate($pict, 37, 127, 15);
imagestring($pict,5, 1230, 5, "datum: ".date("Y-m-d H:i"), $green);
$red = imagecolorallocate($pict, 255, 0, 0);
imagestring($pict,5, 1230, 20, "teplota OUT: ".$data[1]."°C", $red);
$olive = imagecolorallocate($pict, 85, 97, 19);
imagestring($pict,5, 1230, 35, "teplota IN: ".$data[3]."°C", $olive);
$blue = imagecolorallocate($pict, 0, 0, 255);
imagestring($pict,5, 1230, 50, "humidita: ".$data[2]."%", $blue);
$black = imagecolorallocate($pict, 0, 0, 0);
imagestring($pict,5, 1230, 65, "tlak: ".$data[4]."hPa", $black);
imagestring($pict,5, 1230, 80, "osvìtlení: ".round($lux)." lx", $violet);
//pošlu obrázek na výstup
imagepng($pict);
//vyčistím paměť
imagedestroy($pict);
?>