Commit 93d35ac00ebf47b961ec585806fc5b5e19321e9b
1 parent
3c735003
Exists in
master
and in
7 other branches
Otimização da leitura de imagens em cahce
Showing
6 changed files
with
107 additions
and
48 deletions
Show diff stats
classesphp/mapa_googlemaps.php
... | ... | @@ -329,7 +329,29 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
329 | 329 | if($cachedir == "") |
330 | 330 | {$nome = dirname(dirname($map))."/cache/googlemaps/".$layer."/".$nome;} |
331 | 331 | else |
332 | - {$nome = $cachedir."/googlemaps/".$layer."/".$nome;} | |
332 | + {$nome = $cachedir."/googlemaps/".$layer."/".$nome;} | |
333 | + if(file_exists($nome)) | |
334 | + { | |
335 | + ob_start(); | |
336 | + // assuming you have image data in $imagedata | |
337 | + $img = file_get_contents($nome); | |
338 | + $length = strlen($img); | |
339 | + $ft = filemtime($nome); | |
340 | + if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && (strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == $ft)) { | |
341 | + // Client's cache IS current, so we just respond '304 Not Modified'. | |
342 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 304); | |
343 | + } else { | |
344 | + // Image not cached or cache outdated, we respond '200 OK' and output the image. | |
345 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 200); | |
346 | + } | |
347 | + header('Accept-Ranges: bytes'); | |
348 | + header('Content-Length: '.$length); | |
349 | + header('Content-Type: image/png'); | |
350 | + print($img); | |
351 | + ob_end_flush(); | |
352 | + exit; | |
353 | + } | |
354 | + /* | |
333 | 355 | if(file_exists($nome)) |
334 | 356 | { |
335 | 357 | if (!function_exists('imagepng')) |
... | ... | @@ -342,14 +364,12 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
342 | 364 | @$img = imagecreatefrompng($nome); |
343 | 365 | if(!$img) |
344 | 366 | { |
345 | - /* Create a blank image */ | |
346 | 367 | $img = imagecreatetruecolor($w, $h); |
347 | 368 | imagealphablending($img, false); |
348 | 369 | imagesavealpha($img, true); |
349 | 370 | $bgc = imagecolorallocatealpha($img, 255, 255, 255,127); |
350 | 371 | $tc = imagecolorallocate($img, 255, 0, 0); |
351 | 372 | imagefilledrectangle($img, 0, 0, $w, $h, $bgc); |
352 | - /* Output an error message */ | |
353 | 373 | imagestring($img, 3, 5, 5, 'Erro ao ler ' . $nome, $tc); |
354 | 374 | } |
355 | 375 | else |
... | ... | @@ -364,6 +384,7 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
364 | 384 | imagedestroy($img); |
365 | 385 | exit; |
366 | 386 | } |
387 | + */ | |
367 | 388 | } |
368 | 389 | function nomeRand($n=10) |
369 | 390 | { | ... | ... |
classesphp/mapa_openlayers.php
1 | 1 | <?php |
2 | - | |
3 | 2 | /* |
4 | 3 | Title: mapa_openlayers.php |
5 | 4 | |
... | ... | @@ -60,33 +59,7 @@ i3geo/classesphp/mapa_openlayers.php |
60 | 59 | |
61 | 60 | */ |
62 | 61 | error_reporting(0); |
63 | -clearstatcache(); | |
64 | -$_COOKIE = array(); | |
65 | -if (!function_exists('ms_GetVersion')) | |
66 | -{ | |
67 | - $s = PHP_SHLIB_SUFFIX; | |
68 | - @dl( 'php_mapscript.'.$s ); | |
69 | - $ler_extensoes[] = 'php_mapscript'; | |
70 | -} | |
71 | -//verificação de segurança | |
72 | -$_SESSION = array(); | |
73 | -session_name("i3GeoPHP"); | |
74 | -if(@$_GET["g_sid"]) | |
75 | -{session_id($_GET["g_sid"]);} | |
76 | -else | |
77 | -{ilegal();} | |
78 | -session_start(); | |
79 | -//var_dump($_SESSION);exit; | |
80 | -if(@$_SESSION["fingerprint"]) | |
81 | -{ | |
82 | - $f = explode(",",$_SESSION["fingerprint"]); | |
83 | - if (md5('I3GEOSEC' . $_SERVER['HTTP_USER_AGENT'] . session_id()) != $f[0] && !in_array($_GET["telaR"],$f) ) | |
84 | - {ilegal();} | |
85 | -} | |
86 | -else | |
87 | -{exit;} | |
88 | -if(!isset($_SESSION["map_file"])) | |
89 | -{exit;} | |
62 | +inicializa(); | |
90 | 63 | // |
91 | 64 | //map_fileX é necessário caso register_globals = On no PHP.INI |
92 | 65 | $map_fileX = $_SESSION["map_file"]; |
... | ... | @@ -94,8 +67,7 @@ $postgis_mapa = $_SESSION["postgis_mapa"]; |
94 | 67 | $cachedir = $_SESSION["cachedir"]; |
95 | 68 | if(isset($_GET["tipolayer"]) && $_GET["tipolayer"] == "fundo") |
96 | 69 | {$map_fileX = str_replace(".map","fundo.map",$map_fileX);} |
97 | -if(isset($_GET["BBOX"])) | |
98 | -{ | |
70 | +if(isset($_GET["BBOX"])){ | |
99 | 71 | $_GET["mapext"] = str_replace(","," ",$_GET["BBOX"]); |
100 | 72 | $_GET["map_size"] = $_GET["WIDTH"]." ".$_GET["HEIGHT"]; |
101 | 73 | } |
... | ... | @@ -335,7 +307,27 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
335 | 307 | {$nome = $cachedir."/".$layer."/".$nome;} |
336 | 308 | if(file_exists($nome)) |
337 | 309 | { |
338 | - if (!function_exists('imagepng')) | |
310 | + ob_start(); | |
311 | + // assuming you have image data in $imagedata | |
312 | + $img = file_get_contents($nome); | |
313 | + $length = strlen($img); | |
314 | + $ft = filemtime($nome); | |
315 | + if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && (strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == $ft)) { | |
316 | + // Client's cache IS current, so we just respond '304 Not Modified'. | |
317 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 304); | |
318 | + } else { | |
319 | + // Image not cached or cache outdated, we respond '200 OK' and output the image. | |
320 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 200); | |
321 | + } | |
322 | + header('Accept-Ranges: bytes'); | |
323 | + header('Content-Length: '.$length); | |
324 | + header('Content-Type: image/png'); | |
325 | + print($img); | |
326 | + ob_end_flush(); | |
327 | + exit; | |
328 | + } | |
329 | + /* | |
330 | + if (!function_exists('imagepng')) | |
339 | 331 | { |
340 | 332 | $s = PHP_SHLIB_SUFFIX; |
341 | 333 | @dl( 'php_gd2.'.$s ); |
... | ... | @@ -345,7 +337,7 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
345 | 337 | @$img = imagecreatefrompng($nome); |
346 | 338 | if(!$img) |
347 | 339 | { |
348 | - /* Create a blank image */ | |
340 | + // Create a blank image | |
349 | 341 | $img = imagecreatetruecolor($w, $h); |
350 | 342 | imagealphablending($img, false); |
351 | 343 | imagesavealpha($img, true); |
... | ... | @@ -354,7 +346,7 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
354 | 346 | $tc = imagecolorallocate($img, 255, 0, 0); |
355 | 347 | |
356 | 348 | imagefilledrectangle($img, 0, 0, $w, $h, $bgc); |
357 | - /* Output an error message */ | |
349 | + // Output an error message | |
358 | 350 | imagestring($img, 3, 5, 5, 'Erro ao ler ' . $nome, $tc); |
359 | 351 | } |
360 | 352 | else |
... | ... | @@ -369,6 +361,7 @@ function carregaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ |
369 | 361 | imagedestroy($img); |
370 | 362 | exit; |
371 | 363 | } |
364 | + */ | |
372 | 365 | } |
373 | 366 | function nomeRand($n=10) |
374 | 367 | { |
... | ... | @@ -406,6 +399,34 @@ function filtraImg($nomer,$tipoimagem){ |
406 | 399 | {imagepng($m->pixelate(),str_replace("\\","/",$nomer));} |
407 | 400 | } |
408 | 401 | } |
402 | +function inicializa(){ | |
403 | + clearstatcache(); | |
404 | + $_COOKIE = array(); | |
405 | + if (!function_exists('ms_GetVersion')){ | |
406 | + $s = PHP_SHLIB_SUFFIX; | |
407 | + @dl( 'php_mapscript.'.$s ); | |
408 | + $ler_extensoes[] = 'php_mapscript'; | |
409 | + } | |
410 | + //verificação de segurança | |
411 | + $_SESSION = array(); | |
412 | + session_name("i3GeoPHP"); | |
413 | + if(@$_GET["g_sid"]) | |
414 | + {session_id($_GET["g_sid"]);} | |
415 | + else | |
416 | + {ilegal();} | |
417 | + session_start(); | |
418 | + //var_dump($_SESSION);exit; | |
419 | + if(@$_SESSION["fingerprint"]) | |
420 | + { | |
421 | + $f = explode(",",$_SESSION["fingerprint"]); | |
422 | + if (md5('I3GEOSEC' . $_SERVER['HTTP_USER_AGENT'] . session_id()) != $f[0] && !in_array($_GET["telaR"],$f) ) | |
423 | + {ilegal();} | |
424 | + } | |
425 | + else | |
426 | + {exit;} | |
427 | + if(!isset($_SESSION["map_file"])) | |
428 | + {exit;} | |
429 | +} | |
409 | 430 | function ilegal(){ |
410 | 431 | $img = imagecreatefrompng("../imagens/ilegal.png"); |
411 | 432 | imagealphablending($img, false); | ... | ... |
index.html
... | ... | @@ -6,16 +6,9 @@ |
6 | 6 | <meta name="keywords" content="geoprocessing, GIS, maps, mapserver, dados geograficos, mapa interativo, i3geo, geoprocessamento, mapa, gis, sig, geografia, cartografia, meio ambiente"> |
7 | 7 | <head> |
8 | 8 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> |
9 | - | |
10 | 9 | </head> |
11 | 10 | <body> |
12 | -<center> | |
13 | -<br><br> | |
14 | -<table> | |
15 | -<tr> | |
16 | - <td style="padding:10px;"><center><img alt="i3Geo" src='imagens/logo_inicio.png'></td> | |
17 | -</tr> | |
18 | -</table> | |
11 | + | |
19 | 12 | </body> |
20 | 13 | <script> |
21 | 14 | /* | ... | ... |
interface/openlayers.htm
... | ... | @@ -65,7 +65,7 @@ |
65 | 65 | <center> |
66 | 66 | <table id="i3GEOlogoMarca" style='box-shadow:0 1px 13px gray;border-radius:5px;'> |
67 | 67 | <tr> |
68 | - <td><center><h1 style="font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;"><div id=versaoi3geo ></div><h2 style="font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">i3Geo - Software livre para criação de mapas interativos e geoprocessamento<h3 style="font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">Baseado no Mapserver, é licenciado sob GPL e integra o Portal do Software Público Brasileiro</h3></h2></h1></td> | |
68 | + <td><center><h1 style="font-weight:normal;font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;"><div id=versaoi3geo ></div><h2 style="font-weight:normal;font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">i3Geo - Software livre para criação de mapas interativos e geoprocessamento<h3 style="font-weight:normal;font-size:10px;font-family: Verdana, Arial, Helvetica, sans-serif;">Baseado no Mapserver, é licenciado sob GPL e integra o Portal do Software Público Brasileiro</h3></h2></h1></td> | |
69 | 69 | </tr> |
70 | 70 | <tr> |
71 | 71 | <td style="padding:10px;"><center><img alt="" src='../imagens/logo_inicio.png' ></td> |
... | ... | @@ -100,6 +100,7 @@ |
100 | 100 | </div> |
101 | 101 | </div> |
102 | 102 | </div> |
103 | + | |
103 | 104 | <script src="../classesjs/i3geo.js"></script> |
104 | 105 | <script src="../pacotes/openlayers/OpenLayers211.js.php"></script> |
105 | 106 | <!-- estilo necessário para a ferramenta de edição --> | ... | ... |
ogc.php
... | ... | @@ -464,6 +464,28 @@ function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){ |
464 | 464 | {$nome = $cachedir."/".$layer."/".$nome;} |
465 | 465 | if(file_exists($nome)) |
466 | 466 | { |
467 | + ob_start(); | |
468 | + // assuming you have image data in $imagedata | |
469 | + $img = file_get_contents($nome); | |
470 | + $length = strlen($img); | |
471 | + $ft = filemtime($nome); | |
472 | + if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && (strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == $ft)) { | |
473 | + // Client's cache IS current, so we just respond '304 Not Modified'. | |
474 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 304); | |
475 | + } else { | |
476 | + // Image not cached or cache outdated, we respond '200 OK' and output the image. | |
477 | + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 200); | |
478 | + } | |
479 | + header('Accept-Ranges: bytes'); | |
480 | + header('Content-Length: '.$length); | |
481 | + header('Content-Type: image/png'); | |
482 | + print($img); | |
483 | + ob_end_flush(); | |
484 | + exit; | |
485 | + } | |
486 | + /* | |
487 | + if(file_exists($nome)) | |
488 | + { | |
467 | 489 | if (!function_exists('imagepng')) |
468 | 490 | { |
469 | 491 | $s = PHP_SHLIB_SUFFIX; |
... | ... | @@ -474,7 +496,6 @@ function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){ |
474 | 496 | @$img = imagecreatefrompng($nome); |
475 | 497 | if(!$img) |
476 | 498 | { |
477 | - /* Create a blank image */ | |
478 | 499 | $img = imagecreatetruecolor($w, $h); |
479 | 500 | imagealphablending($img, false); |
480 | 501 | imagesavealpha($img, true); |
... | ... | @@ -483,7 +504,6 @@ function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){ |
483 | 504 | $tc = imagecolorallocate($img, 255, 0, 0); |
484 | 505 | |
485 | 506 | imagefilledrectangle($img, 0, 0, $w, $h, $bgc); |
486 | - /* Output an error message */ | |
487 | 507 | imagestring($img, 3, 5, 5, 'Erro ao ler ' . $nome, $tc); |
488 | 508 | } |
489 | 509 | else |
... | ... | @@ -498,6 +518,7 @@ function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){ |
498 | 518 | imagedestroy($img); |
499 | 519 | exit; |
500 | 520 | } |
521 | + */ | |
501 | 522 | } |
502 | 523 | |
503 | 524 | ?> | ... | ... |
pacotes/kmlmapserver/classes/layerserver.class.php
... | ... | @@ -758,9 +758,11 @@ class LayerServer { |
758 | 758 | function add_style_point(&$new_style, &$style_data){ |
759 | 759 | if($style_data['icon']){ |
760 | 760 | $st =& $new_style->addChild('IconStyle'); |
761 | - if($style_data['width'] && $style_data['icon_width'] != 32){ | |
761 | + if($style_data['width'] && $style_data['icon_width'] != 32){ | |
762 | 762 | $st->addChild('scale', $style_data['icon_width'] / 32); |
763 | 763 | } |
764 | + else | |
765 | + {$st->addChild('scale', 1);} | |
764 | 766 | $icon =& $st->addChild('Icon'); |
765 | 767 | $icon->addChild('href', htmlentities($style_data['icon'])); |
766 | 768 | } | ... | ... |