Nyt on 4 tunnin pätkä kasassa, josta tosin suuri osa on pimeää kuvaa, ja videon koko on vaivalloiset 180 KB kun tein sen FFMPEG:llä siten että kuva tallennetaan joka toinen minuutti koossa 480x320 joka on ihan hyvä vielä videolle.
Sen voi hakea
tuolta, ei ole mitenkään autopäivittyvä vaan koeotos klo 19-23 pätkästä.
Vertailuna, ainakin oma WD:n tekemä tunnin video on 640 KB, samalla koolla.
Uhohtui tuosta edellisesta viestistä se php-skripti

Tämä hoitaa myös noita muita webkameran kuvia joita sivuilla on.
Siinä on paljon sontaa joukossa mutta pääidea on siinä että
(a) lukaisee clientraw:n ja raapustaa tiedot kuviin
(b) tallentaa yhteensä 4 erikokosita kuvaa webkameran kuvasta aina pienestä nappikuvasta normikokoon (avartarkoko, nwn:n pallukka-koko, 480x320 ja 640x480)

(c) kopioi medium-kokoisen kuvan myös timelapse-kansioon videota varten tarkistamalla ensin että kuin montaa kuvaa siellä jo on jotta saa numeroinnin oikein. Tarkistaa myös että kuvasta tuli jotain (= koko yli 1KB).
Tallennus tapahtuu omaan kansioon 3 kuvan osalta josta Fling:in FTP-automaatti sitten uppaa ne dedille heti kun tulevat uunista ulos

neljännen kuvan osalta en tarvi sitä sivuilla joten en laittanut sitä siihen (on videon käyttämä mediumkoko).
Selvennyksi vielä, tämä ajetaan wx-purkilla kotona wamp-serverin avulla, ei dedillä.
<?php
date_default_timezone_set("Europe/Helsinki");
# what is the root of your files?
$basedir="D:\Dorgem";
$clientrawfile = "D:\WD\webfiles\clientraw.txt";
$clientraw = get_raw($clientrawfile);
$font="tahomabd.ttf";
$astring= windDir($clientraw[3]) . " " . ktsToMph($clientraw[2],1) . " m/s, ".$clientraw[4]."°C, ". $clientraw[7]." mm";
$file="D:\Dorgem\cam.jpg";
$image = $file;
$camtime=filemtime($image);
$bstring=date('d.m.Y H:i T', $camtime);
$cstring = "nordicweather.net";
$ext = substr($image, -3);
if (strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($image)) {
echo "Error opening $image!"; exit;
}
} else {
die;
}
$grey = imagecolorallocate ($im2, 166, 166, 166);
$black = imagecolorallocate ($im2, 0,0,0);
$image_p = imagecreatetruecolor(128,96);
imagecopyresampled($image_p, $im2, 0, 0, 0, 0, 128, 96, 640, 480);
imagettftext($image_p, 4, 0, 35, 92, $grey, $font, $cstring);
imagejpeg($image_p,'C:\wamp\www\out\cam_small.jpg',85);
imagedestroy($image_p);
$image_p = imagecreatetruecolor(100,100);
imagecopyresampled($image_p, $im2, 0, 0, 0, 0, 100, 100, 640, 480);
imagettftext($image_p, 4, 0, 28, 98, $grey, $font, $cstring);
imagejpeg($image_p,'C:\wamp\www\out\cam_ww.jpg',85);
imagedestroy($image_p);
$astr = strlen($astring);
$bstr = strlen($bstring);
$image_p = imagecreatetruecolor(480,320);
imagecopyresampled($image_p, $im2, 0, 0, 0, 0, 480, 320, 640, 480);
imagettftext($image_p, 8, 0, 356, 290, $black, $font, $cstring);
imagettftext($image_p, 8, 0, (465-(($astr*5.9)-1)), 316, $black, $font, $astring);
imagettftext($image_p, 8, 0, (465-(($bstr*6.25)-1)), 303, $black, $font, $bstring);
imagettftext($image_p, 8, 0, 355, 289, $grey, $font, $cstring);
imagettftext($image_p, 8, 0, (465-($astr*5.9)), 315, $grey, $font, $astring);
imagettftext($image_p, 8, 0, (465-($bstr*6.25)), 302, $grey, $font, $bstring);
imagejpeg($image_p,'C:\wamp\www\cam_med.jpg',85);
imagedestroy($image_p);
imagettftext($im2, 10, 0, (635-(($astr*7.7)-1)), 476, $black, $font, $astring);
imagettftext($im2, 10, 0, (635-(($bstr*7.8)-1)), 461, $black, $font, $bstring);
imagettftext($im2, 10, 0, 499, 446, $black, $font, $cstring);
imagettftext($im2, 10, 0, (635-($astr*7.7)), 475, $grey, $font, $astring);
imagettftext($im2, 10, 0, (635-($bstr*7.8)), 460, $grey, $font, $bstring);
imagettftext($im2, 10, 0, 498, 445, $grey, $font, $cstring);
imagejpeg($im2,'C:\wamp\www\out\cam.jpg',85);
#imagepng($im2,'C:\wamp\www\out\cam.png',9);
imagedestroy($im2);
$im = 'C:\wamp\www\cam_med.jpg';
$outdir = 'C:\wamp\www\timelapse';
$filecount = count(glob("" . $outdir . "\cam*.jpg"));
$filecount += 1;
$fileout = $outdir.'\cam'.$filecount.'.jpg';
copy($im, $fileout);
if(filesize($fileout) < 1) { unlink($fileout); }
function get_raw( $rawfile ) {
$rawdata = implode('', file($rawfile));
$rawdata = explode(' ', $rawdata);
return $rawdata;
}
function ktsToMph ($kts, $prec) {
$prec = (integer)$prec;
$inch = (float)$kts * 0.514444444;
return round($inch, 1);
}
function windDir ($winddir)
// Given the wind direction, return the text label
// for that value. 16 point compass
{
if (!isset($winddir)) {
return "---";
}
$windlabel = array ("N","NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S",
"SSW","SW", "WSW", "W", "WNN", "NW", "NNW");
$dir = $windlabel[ (int) ($winddir / 22.5) ];
return "$dir";
}
exit;
?>