'MO', 'Tue' => 'DI', 'Wed' => 'MI', 'Thu' => 'DO', 'Fri' => 'FR', 'Sat' => 'SA', 'Sun' => 'SO'); $now= $_POST['now']; if (preg_match("/^(\d{2})(\d{2})(\d{2})(\d{2})_(\d{2})(\d{2})$/", $now, $rr)) { $now_yh= $rr[1]; $now_yy= $rr[2]; $now_m= $rr[3]; $now_d= $rr[4]; $now_th= $rr[5]; $now_tm= $rr[6]; } else { // If no time is specified, use the current time $now_yh= "20"; $now_yy= strftime("%y"); $now_m= strftime("%m"); $now_d= strftime("%d"); $now_th= strftime("%H"); $now_tm= strftime("%M"); } $now_wo = date('D',strtotime("$now_d.$now_m.$now_yh$now_yy $now_th:$now_tm") ); $now_wo = strtr($now_wo, $trans); $webcamImageName= $webcam['workPath']."/current/raw.jpg"; if (!move_uploaded_file($_FILES["upload"]["tmp_name"], $webcamImageName)) { echoLog("No upload file.", "error"); exit; } $size= filesize($webcamImageName); doLog("state=processing imagesize=$size", "info"); # Seek for weather data $wx= ""; $wxname= $webcam['workPath']."/wetter/cam.txt"; $tempfile= $webcam['workPath']."/wetter/temp.txt"; $wassertempfile= $webcam['workPath']."/wetter/wassertemp.txt"; $windfile= $webcam['workPath']."/wetter/wind.txt"; if (! @is_file($wxname)) { $wxname= "../../../wx/{$webcam['name']}cam.txt"; } if (isset($webcam['wxFile']) && is_file($webcam['wxFile'])) { $wxname= $webcam['wxFile']; } if (@filemtime($tempfile) < (time()-900)) { doLog("Wetterdaten nicht aktuell - Reboot Webcam", "Wetterinfo"); if (isset($webcam['kurzName'])){ exec("touch /var/www/addicted/fileadmin/webcam/reboot/{$webcam['kurzName']}"); } } else { doLog("Wetterdaten OK", "Wetterinfo"); } if (@filemtime($wxname) > (time()-1800)) { $wxfile= fopen($wxname, "r"); if ($wxfile) { $wx= fgets($wxfile); $wx= preg_replace("/\s+$/","",$wx); fclose($wxfile); $wx= "$wx\n"; } } if (@filemtime($wassertempfile) > (time()-1800)) { $wxfile= fopen($wassertempfile, "r"); if ($wxfile) { $wx= fgets($wxfile); $wx= preg_replace("/\s+$/","",$wx); fclose($wxfile); $wassertemp= "$wx"; } } if (@filemtime($tempfile) > (time()-1800)) { $wxfile= fopen($tempfile, "r"); if ($wxfile) { $wx= fgets($wxfile); $wx= preg_replace("/\s+$/","",$wx); fclose($wxfile); $temp= "$wx"; } } if (@filemtime($windfile) > (time()-1800)) { $wxfile= fopen($windfile, "r"); if ($wxfile) { $wx= fgets($wxfile); $wx= preg_replace("/\s+$/","",$wx); fclose($wxfile); $wind= "$wx"; } } doLog("Wetterdaten=$wx", "Wetterinfo"); $exif= getExif($webcamImageName); $webcam['exif']= $exif; $webcamImageCorr= $webcam['workPath']."/current/raw-corr.jpg"; if (is_callable(@$webcam['corrFunc'])) { if ($webcam['corrFunc']($exif, $webcamImageName, $webcamImageCorr)) { $webcamImageName= $webcamImageCorr; } } $img= @ImageCreateFromJPEG($webcamImageName); if (! $img) { echoLog("No valid JPG input.", "error"); exit; } $exiftxt= ""; /*if (isset($exif['imgtxt'])) { $exiftxt= $exif['imgtxt']; }*/ $textImg= createTextImage($img, $webcam['title']."". "$now_wo, $now_th:$now_tm", "$now_d.$now_m.$now_yh$now_yy", $temp, $wind, $webcam['textImageFarbeBoe'], $wassertemp); $fwlogoname= "foto-webcam.eu-logo.png"; if (isset($webcam['fwLogo'])) { $fwlogoname= $webcam['fwLogo']; } if (isset($webcam['fwLogoNight']) && isNight()) { $fwlogoname= $webcam['fwLogoNight']; } $fwlogo= @ImageCreateFromPNG($fwlogoname); if (file_exists($webcam['workPath']."/logo_night.png") && isNight()) { $logo= @ImageCreateFromPNG($webcam['workPath']."/logo_night.png"); } else { $logo= @ImageCreateFromPNG($webcam['workPath']."/logo.png"); } if (! isset($webcam['topOffset'])) { $webcam['topOffset']= 0; } // Try to fine-tune gamma, iso and exposure compensation for next image $luminance= tuneExposure($exif, $img); // If necessary, add noise filter to regions filterRegions($img); // Generate the different resolutions foreach ($webcam['resolutions'] as $res) { $fn= $webcam['workPath']."/current/$res.jpg"; createResizedImage($img, $fn, $res, 0, $webcam['topOffset'], $textImg, $fwlogo, $logo); } // Generate custom resolutions, if necessary if (isset($webcam['customRes'])) { foreach ($webcam['customRes'] as $cr) { $fn= $webcam['workPath']."/current/$cr[0].jpg"; createResizedImage($img, $fn, $cr[0], $cr[1], $cr[2], $textImg, $fwlogo, $logo); } } // Now set archived image in place $target_dir= $webcam['workPath']."/$now_yh$now_yy/$now_m/$now_d"; @mkdir($target_dir, 0775, true); $target_file= "$target_dir/${now_th}${now_tm}_"; //addicted - surferszoom if (isset($webcam['surfersZoom']) && ! isNight()) { foreach ($webcam['surfersZoom'] as $cr) { $fn= "${target_file}lz.jpg"; createResizedImage($img, $fn, $cr[0], $cr[1], $cr[2], $textImg, $fwlogo, $logo, $cr[3],$cr[4],$cr[5]); } } // Determine sizes $smSize= 114; $laSize= 816; $ldSize= 940; $lmSize= 1200; if (isset($webcam['thumbWidth'])) $smSize= $webcam['thumbWidth']; if (isset($webcam['mainWidth'])) $laSize= $webcam['mainWidth']; if (isset($webcam['hdWidth'])) $lmSize= $webcam['hdWidth']; // Thumbnail shall not have text and logo createResizedImage($img,"${target_file}sm.jpg",$smSize,0,$webcam['topOffset']); // The full size must be the last since it changes the original image $fn= $webcam['workPath']."/current/full.jpg"; if (isset($webcam['hugeIsRaw'])) { copy($webcamImageName, $fn); } else { createResizedImage($img, $fn, 0, 0, $webcam['topOffset'], $textImg, $fwlogo, $logo); } copy($fn, "${target_file}hu.jpg"); // Be sure the main trigger for meta data is created at latest copy($webcam['workPath']."/current/$lmSize.jpg", "${target_file}lm.jpg"); copy($webcam['workPath']."/current/$laSize.jpg", "${target_file}la.jpg"); copy($webcam['workPath']."/current/$ldSize.jpg", "${target_file}ld.jpg"); if (isset($exif['file'])) { $exf= fopen("${target_file}ex.txt", "w"); if ($exf) { fwrite($exf, $exif['file']); fwrite($exf, "Luminance|$luminance %\n"); fclose($exf); copy("${target_file}ex.txt", $webcam['workPath']."/current/exif.txt"); } } $exlen= 0; if (isset($exif['file'])) { $exlen= strlen($exif['file']); $exf= fopen("${target_file}ex.txt", "w"); if ($exf) { fwrite($exf, $exif['file']); fclose($exf); copy("${target_file}ex.txt", $webcam['workPath']."/current/exif.txt"); } } // Clean up resources ImageDestroy($img); ImageDestroy($textImg); if ($fwlogo) { ImageDestroy($fwlogo); } if ($logo) { ImageDestroy($logo); } $elapsed= round((gettimeofday(true)-$btime)*1000); doLog("state=ready elapsed={$elapsed} ms.", "info"); if ($webcam['useDatabase']) { $mysqli= openMysql(); if ($mysqli) { $img= "$now_yh$now_yy/$now_m/$now_d/${now_th}${now_tm}"; $stamp= "$now_yh$now_yy-$now_m-$now_d ${now_th}:${now_tm}:00"; $set= "set cam='".$webcam['name']."',"; if ($exlen>50) { $ex= $mysqli->escape_string($exif['file']); $mysqli->query("replace webcam_exif $set path='$img', exif='$ex'"); } $mysqli->query("replace webcam_image $set path='$img',stamp='$stamp',". "have_lm=1, have_ld=1, have_hu=1, have_ex='$exlen'"); $day= preg_replace("/.\d\d\d\d$/", "", $img); $mysqli->query("replace webcam_day $set path='$day'"); //yyyy/mm/dd $day= preg_replace("/.\d\d$/", "", $day); $mysqli->query("replace webcam_day $set path='$day'"); //yyyy/mm $day= preg_replace("/.\d\d$/", "", $day); $mysqli->query("replace webcam_day $set path='$day'"); //yyyy } } // We have used lots of memory. It should be freed, so // terminate Apache 2 child process after request has been // done by sending a SIGWINCH POSIX signal (28). function kill_on_exit() { posix_kill(getmypid(), 28); } register_shutdown_function('kill_on_exit'); ?>