Commit f6fdcd5b1d4c92e42c4bdd66715f162de347803a
1 parent
db3e50b3
Exists in
master
and in
7 other branches
Atualização do repositorio
Showing
2 changed files
with
621 additions
and
623 deletions
Show diff stats
admin/admin.db
No preview for this file type
classesphp/mapa_openlayers.php
| 1 | -<?php | |
| 2 | -/* | |
| 3 | -Title: mapa_openlayers.php | |
| 4 | - | |
| 5 | -Faz o processamento de um mapfile segundo as necessidades do i3geo, como por exemplo, fazendo a substituição | |
| 6 | -das variáveis de conexão com banco e outras operações específicas do i3Geo. | |
| 7 | - | |
| 8 | -É utilizado especificamente nas interfaces que utilizam a biblioteca OpenLayers. | |
| 9 | - | |
| 10 | - | |
| 11 | -Parametros: | |
| 12 | - | |
| 13 | -g_sid {string} - codigo da "section" PHP | |
| 14 | - | |
| 15 | -tipolayer {fundo|} - (opcional) indica que a imagem a ser produzida compõe o fundo do mapa | |
| 16 | - | |
| 17 | -BBOX {xmin xmax ymin ymax} - extensão geográfica a ser utilizada no desenho do mapa | |
| 18 | - | |
| 19 | -WIDTH {numeric} - largura do mapa | |
| 20 | - | |
| 21 | -HEIGHT {numeric} - altura do mapa | |
| 22 | - | |
| 23 | -layer {string} - codigo do layer existente no mapa que será desenhado | |
| 24 | - | |
| 25 | -DESLIGACACHE {sim|nao} - força a não usar o cache de imagens qd definido como "sim", do contrário, o uso ou não do cache será definido automaticamente | |
| 26 | - | |
| 27 | -TIPOIMAGEM {cinza|sepiaclara|sepianormal|negativo|detectaBordas|embassa|gaussian_blur|selective_blur|mean_removal|pixelate | |
| 28 | -} - filtro de imagem que será aplicado na imagem | |
| 29 | - | |
| 30 | -Licenca: | |
| 31 | - | |
| 32 | -GPL2 | |
| 33 | - | |
| 34 | -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | |
| 35 | - | |
| 36 | -Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | |
| 37 | -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com | |
| 38 | - | |
| 39 | -Este programa é software livre; você pode redistribuí-lo | |
| 40 | -e/ou modificá-lo sob os termos da Licença Pública Geral | |
| 41 | -GNU conforme publicada pela Free Software Foundation; | |
| 42 | - | |
| 43 | -Este programa é distribuído na expectativa de que seja útil, | |
| 44 | -porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
| 45 | -de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
| 46 | -Consulte a Licença Pública Geral do GNU para mais detalhes. | |
| 47 | -Você deve ter recebido uma copia da Licença Pública Geral do | |
| 48 | -GNU junto com este programa; se não, escreva para a | |
| 49 | -Free Software Foundation, Inc., no endereço | |
| 50 | -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | |
| 51 | - | |
| 52 | -Arquivo: | |
| 53 | - | |
| 54 | -i3geo/classesphp/mapa_openlayers.php | |
| 55 | - | |
| 56 | -*/ | |
| 57 | -include("sani_request.php"); | |
| 58 | -//para efeitos de compatibilidade | |
| 59 | -if (!function_exists('ms_GetVersion')){ | |
| 60 | - include_once ("carrega_ext.php"); | |
| 61 | -} | |
| 62 | -//error_reporting(0); | |
| 63 | -inicializa(); | |
| 64 | -// | |
| 65 | -//calcula a extensao geografica com base no x,y,z | |
| 66 | -//nos casos do modo notile, a requisicao e feita como se fosse um wms | |
| 67 | -//quando for do tipo tms $_GET["tms"] contem os parametros do tile | |
| 68 | -// | |
| 69 | - | |
| 70 | -if(isset($_GET["tms"])){ | |
| 71 | - $_GET["WIDTH"] = 256; | |
| 72 | - $_GET["HEIGHT"] = 256; | |
| 73 | - $temp = explode("/",$_GET["tms"]); | |
| 74 | - $z = $temp[2]; | |
| 75 | - $x = $temp[3]; | |
| 76 | - $y = str_replace(".png","",$temp[4]); | |
| 77 | - | |
| 78 | - $n = pow(2,$z+1); | |
| 79 | - $lon1 = $x / $n * 360.0 - 180.0; | |
| 80 | - $lon2 = ($x+1) / $n * 360.0 - 180.0; | |
| 81 | - $n = pow(2,$z); | |
| 82 | - $lat1 = $y / $n * 180.0 - 90.0; | |
| 83 | - $lat2 = ($y+1) / $n * 180.0 - 90; | |
| 84 | - $_GET["BBOX"] = $lon1." ".$lat1." ".$lon2." ".$lat2; | |
| 85 | -} | |
| 86 | - | |
| 87 | -//para o caso da versao 3 do OpenLayers | |
| 88 | -if(isset($_GET["X"]) && !($_GET["REQUEST"] == "getfeatureinfo" || $_GET["REQUEST"] == "GetFeatureInfo" || strtolower($_GET["REQUEST"]) == "getfeature")){ | |
| 89 | - $box = str_replace(" ",",",$_GET["BBOX"]); | |
| 90 | - $box = explode(",",$box); | |
| 91 | - $res = ($box[2] + 180) - ($box[0] + 180); | |
| 92 | - $res = $res / 256; | |
| 93 | - $z = intval((0.703125 / $res) / 4) + 1; | |
| 94 | - $x = floor((($box[0] + 180) / 360) * pow(2, $z)); | |
| 95 | - $y = floor((1 - log(tan(deg2rad($box[3])) + 1 / cos(deg2rad($box[3]))) / pi()) /2 * pow(2, $z)); | |
| 96 | - | |
| 97 | - $_GET["WIDTH"] = 256; | |
| 98 | - $_GET["HEIGHT"] = 256; | |
| 99 | - $_GET["tms"] = "/".$_GET["layer"]."/".$z."/".$x."/".$y.".png"; | |
| 100 | -} | |
| 101 | - | |
| 102 | -if(isset($_GET["TileMatrix"])){ | |
| 103 | - $_GET["WIDTH"] = 256; | |
| 104 | - $_GET["HEIGHT"] = 256; | |
| 105 | - $z = $_GET["TileMatrix"]; | |
| 106 | - $x = $_GET["TileCol"]; | |
| 107 | - $y = $_GET["TileRow"]; | |
| 108 | - //calcula resolucoes | |
| 109 | - $res = array(); | |
| 110 | - $temp = 0.703125; | |
| 111 | - for($i = 0; $i < 40; $i++){ | |
| 112 | - $res[] = $temp; | |
| 113 | - $temp = $temp / 2; | |
| 114 | - } | |
| 115 | - $_GET["tms"] = "/wmts/".$_GET["layer"]."/".$z."/".$x."/".$y.".png"; | |
| 116 | - if($z."/".$x."/".$y == "0/0/0" || $x == -1 || $y == -1){ | |
| 117 | - return; | |
| 118 | - } | |
| 119 | - $top_left_minx = -180; | |
| 120 | - $top_left_maxy = 90; | |
| 121 | - | |
| 122 | - $x_size = $res[$z - 1] * 256; | |
| 123 | - $y_size = $x_size; | |
| 124 | - | |
| 125 | - $lon1 = $top_left_minx + ($x * $x_size); | |
| 126 | - $lat1 = $top_left_maxy - ($y * $y_size) - $y_size; | |
| 127 | - $lon2 = $top_left_minx + ($x * $x_size) + $x_size; | |
| 128 | - $lat2 = $top_left_maxy - ($y * $y_size); | |
| 129 | - | |
| 130 | - $_GET["BBOX"] = $lon1." ".$lat1." ".$lon2." ".$lat2; | |
| 131 | -} | |
| 132 | - | |
| 133 | -$map_fileX = $_SESSION["map_file"]; | |
| 134 | -// | |
| 135 | -//verifica se o request e OGC | |
| 136 | -if(!empty($_GET["request"])){ | |
| 137 | - $_GET["REQUEST"] = $_GET["request"]; | |
| 138 | -} | |
| 1 | +<?php | |
| 2 | +/* | |
| 3 | + * Title: mapa_openlayers.php | |
| 4 | + * | |
| 5 | + * Faz o processamento de um mapfile segundo as necessidades do i3geo, como por exemplo, fazendo a substituição | |
| 6 | + * das variáveis de conexão com banco e outras operações específicas do i3Geo. | |
| 7 | + * | |
| 8 | + * É utilizado especificamente nas interfaces que utilizam a biblioteca OpenLayers. | |
| 9 | + * | |
| 10 | + * | |
| 11 | + * Parametros: | |
| 12 | + * | |
| 13 | + * g_sid {string} - codigo da "section" PHP | |
| 14 | + * | |
| 15 | + * tipolayer {fundo|} - (opcional) indica que a imagem a ser produzida compõe o fundo do mapa | |
| 16 | + * | |
| 17 | + * BBOX {xmin xmax ymin ymax} - extensão geográfica a ser utilizada no desenho do mapa | |
| 18 | + * | |
| 19 | + * WIDTH {numeric} - largura do mapa | |
| 20 | + * | |
| 21 | + * HEIGHT {numeric} - altura do mapa | |
| 22 | + * | |
| 23 | + * layer {string} - codigo do layer existente no mapa que será desenhado | |
| 24 | + * | |
| 25 | + * DESLIGACACHE {sim|nao} - força a não usar o cache de imagens qd definido como "sim", do contrário, o uso ou não do cache será definido automaticamente | |
| 26 | + * | |
| 27 | + * TIPOIMAGEM {cinza|sepiaclara|sepianormal|negativo|detectaBordas|embassa|gaussian_blur|selective_blur|mean_removal|pixelate | |
| 28 | + * } - filtro de imagem que será aplicado na imagem | |
| 29 | + * | |
| 30 | + * Licenca: | |
| 31 | + * | |
| 32 | + * GPL2 | |
| 33 | + * | |
| 34 | + * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | |
| 35 | + * | |
| 36 | + * Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | |
| 37 | + * Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com | |
| 38 | + * | |
| 39 | + * Este programa é software livre; você pode redistribuí-lo | |
| 40 | + * e/ou modificá-lo sob os termos da Licença Pública Geral | |
| 41 | + * GNU conforme publicada pela Free Software Foundation; | |
| 42 | + * | |
| 43 | + * Este programa é distribuído na expectativa de que seja útil, | |
| 44 | + * porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
| 45 | + * de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
| 46 | + * Consulte a Licença Pública Geral do GNU para mais detalhes. | |
| 47 | + * Você deve ter recebido uma copia da Licença Pública Geral do | |
| 48 | + * GNU junto com este programa; se não, escreva para a | |
| 49 | + * Free Software Foundation, Inc., no endereço | |
| 50 | + * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | |
| 51 | + * | |
| 52 | + * Arquivo: | |
| 53 | + * | |
| 54 | + * i3geo/classesphp/mapa_openlayers.php | |
| 55 | + * | |
| 56 | + */ | |
| 57 | +include ("sani_request.php"); | |
| 58 | +// para efeitos de compatibilidade | |
| 59 | +if (! function_exists ( 'ms_GetVersion' )) { | |
| 60 | + include_once ("carrega_ext.php"); | |
| 61 | +} | |
| 62 | +// error_reporting(0); | |
| 63 | +inicializa (); | |
| 139 | 64 | // |
| 140 | -//resolve o problema da selecao nas versoes mais recentes nova do mapserver | |
| 65 | +// calcula a extensao geografica com base no x,y,z | |
| 66 | +// nos casos do modo notile, a requisicao e feita como se fosse um wms | |
| 67 | +// quando for do tipo tms $_GET["tms"] contem os parametros do tile | |
| 141 | 68 | // |
| 142 | -$qyfile = dirname($map_fileX)."/".$_GET["layer"]."_qy.map"; | |
| 143 | -$qy = file_exists($qyfile); | |
| 144 | - | |
| 145 | -if($_GET["REQUEST"] == "getlegendgraphic" || $_GET["REQUEST"] == "getfeatureinfo" || $_GET["REQUEST"] == "GetFeatureInfo" || strtolower($_GET["REQUEST"]) == "getfeature"){ | |
| 146 | - $_GET["DESLIGACACHE"] = "sim"; | |
| 147 | -} | |
| 148 | -else{ | |
| 149 | - if($qy == false && $_GET["cache"] == "sim" && $_GET["DESLIGACACHE"] != "sim"){ | |
| 150 | - carregaCacheImagem($_SESSION["cachedir"],$_SESSION["map_file"],$_GET["tms"],$_SESSION["i3georendermode"]); | |
| 151 | - } | |
| 152 | -} | |
| 153 | -// | |
| 154 | -//map_fileX e para o caso register_globals = On no PHP.INI | |
| 155 | -// | |
| 156 | -if(isset($_GET["tipolayer"]) && $_GET["tipolayer"] == "fundo"){ | |
| 157 | - $map_fileX = str_replace(".map","fundo.map",$map_fileX); | |
| 158 | -} | |
| 159 | -$postgis_mapa = $_SESSION["postgis_mapa"]; | |
| 160 | - | |
| 161 | -//por seguranca | |
| 162 | -include_once("funcoes_gerais.php"); | |
| 163 | - | |
| 164 | -$logExec = $_SESSION["logExec"]; | |
| 165 | - | |
| 166 | -if(isset($logExec) && $logExec["mapa_"] == true){ | |
| 167 | - i3GeoLog("prog: mapa_openlayers url: ".implode("&",array_merge($_GET,$_POST)),$_SESSION["dir_tmp"]); | |
| 168 | -} | |
| 169 | - | |
| 170 | -restauraCon($map_fileX,$postgis_mapa); | |
| 171 | - | |
| 172 | -$cachedir = $_SESSION["cachedir"]; | |
| 173 | -if(isset($_GET["BBOX"])){ | |
| 174 | - $_GET["mapext"] = str_replace(","," ",$_GET["BBOX"]); | |
| 175 | - $_GET["map_size"] = $_GET["WIDTH"]." ".$_GET["HEIGHT"]; | |
| 176 | -} | |
| 177 | -$_GET["TIPOIMAGEM"] = trim($_GET["TIPOIMAGEM"]); | |
| 178 | -$mapa = ms_newMapObj($map_fileX); | |
| 179 | -// | |
| 180 | -//processa os layers do mapfile | |
| 181 | -// | |
| 182 | - $numlayers = $mapa->numlayers; | |
| 183 | - $cache = false; | |
| 184 | - for($i = 0;$i < $numlayers;++$i){ | |
| 185 | - $l = $mapa->getLayer($i); | |
| 186 | - $layerName = $l->name; | |
| 187 | - if($layerName != $_GET["layer"]){ | |
| 188 | - $l->set("status",MS_OFF); | |
| 189 | - } | |
| 190 | - //no caso de haver uma mascara definida no layer | |
| 191 | - if($versao["inteiro"] >= 60200){ | |
| 192 | - if($l->mask != ""){ | |
| 193 | - $lmask = $mapa->getlayerbyname($l->mask); | |
| 194 | - if(!empty($postgis_mapa)){ | |
| 195 | - if($lmask->connectiontype == MS_POSTGIS){ | |
| 196 | - $lcon = $l->connection; | |
| 197 | - if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){ | |
| 198 | - if(($lcon == " ") || ($lcon == "")){ | |
| 199 | - $lmask->set("connection",$postgis_mapa); | |
| 200 | - } | |
| 201 | - else{ | |
| 202 | - $lmask->set("connection",$postgis_mapa[$lcon]); | |
| 203 | - } | |
| 204 | - } | |
| 205 | - } | |
| 206 | - } | |
| 207 | - } | |
| 208 | - } | |
| 209 | - if($layerName == $_GET["layer"] || $l->group == $_GET["layer"] && $l->group != ""){ | |
| 210 | - if ($l->getmetadata("classesnome") != "" || $l->getmetadata("palletefile") != ""){ | |
| 211 | - if(!function_exists("autoClasses")){ | |
| 212 | - include_once("funcoes_gerais.php"); | |
| 213 | - } | |
| 214 | - autoClasses($l,$mapa); | |
| 215 | - } | |
| 216 | - // | |
| 217 | - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos | |
| 218 | - // | |
| 219 | - $cortePixels = 0; | |
| 220 | - if ($l->getmetadata("cortepixels") != "" && $qy == false){ | |
| 221 | - $cortePixels = $l->getmetadata("cortepixels"); | |
| 222 | - } | |
| 223 | - $l->set("status",MS_DEFAULT); | |
| 224 | - $l->set("template","none.htm"); | |
| 225 | - if (!empty($postgis_mapa)){ | |
| 226 | - if ($l->connectiontype == MS_POSTGIS){ | |
| 227 | - $lcon = $l->connection; | |
| 228 | - if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){ | |
| 229 | - if(($lcon == " ") || ($lcon == "")) | |
| 230 | - {$l->set("connection",$postgis_mapa);} | |
| 231 | - else | |
| 232 | - {$l->set("connection",$postgis_mapa[$lcon]);} | |
| 233 | - } | |
| 234 | - } | |
| 235 | - } | |
| 236 | - } | |
| 237 | - if($_GET["REQUEST"] == "getlegendgraphic"){ | |
| 238 | - $nclass = $l->numclasses; | |
| 239 | - for($ic=0;$ic<$nclass;$ic++){ | |
| 240 | - $classe = $l->getclass($ic); | |
| 241 | - if($classe->title === ""){ | |
| 242 | - $classe->title = $classe->name; | |
| 243 | - } | |
| 244 | - } | |
| 245 | - } | |
| 246 | - if($layerName == $_GET["layer"]){ | |
| 247 | - if(strtolower($l->getmetadata("cache")) == "sim"){ | |
| 248 | - $cache = true; | |
| 249 | - $nomecache = $l->getmetadata("nomeoriginal"); | |
| 250 | - if($nomecache == ""){ | |
| 251 | - $nomecache = $layerName; | |
| 252 | - } | |
| 253 | - } | |
| 254 | - if($_GET["REQUEST"] == "getfeatureinfo" || $_GET["REQUEST"] == "GetFeatureInfo" || strtolower($_GET["REQUEST"]) == "getfeature" ){ | |
| 255 | - $l->setmetadata("gml_include_items","all"); | |
| 256 | - $l->set("template","none.htm"); | |
| 257 | - $l->setmetadata("WMS_INCLUDE_ITEMS","all"); | |
| 258 | - $l->setmetadata("WFS_INCLUDE_ITEMS","all"); | |
| 259 | - $l->setmetadata("ows_enable_request","*"); | |
| 260 | - $l->set("dump",MS_TRUE); | |
| 261 | - $l->setmetadata("ows_srs","AUTO"); | |
| 262 | - if(strtolower($_GET["REQUEST"]) == "getfeature"){ | |
| 263 | - $_GET["TYPENAME"] = $l->name; | |
| 264 | - } | |
| 265 | - } | |
| 266 | - } | |
| 267 | - } | |
| 268 | -if (!function_exists('imagepng')){ | |
| 269 | - $_GET["TIPOIMAGEM"] = ""; | |
| 270 | -} | |
| 271 | - | |
| 272 | -if($_GET["layer"] == ""){ | |
| 273 | - $cache = true; | |
| 274 | -} | |
| 275 | -if(($_GET == false) || ($qy) || (strtolower($_GET["DESLIGACACHE"]) == "sim")){ | |
| 276 | - $cache = false; | |
| 277 | -} | |
| 278 | -elseif($_GET["TIPOIMAGEM"] != "" && $_GET["TIPOIMAGEM"] != "nenhum"){ | |
| 279 | - $cache = false; | |
| 280 | -} | |
| 281 | - | |
| 282 | -if($cache == true && $_GET["cache"] != "nao"){ | |
| 283 | - carregaCacheImagem($cachedir,$_SESSION["map_file"],$_GET["tms"]); | |
| 284 | -} | |
| 285 | -if(isset($_GET["map_size"])){ | |
| 286 | - $map_size = explode(" ",$_GET["map_size"]); | |
| 287 | - $mapa->setsize($map_size[0],$map_size[1]); | |
| 288 | -} | |
| 289 | - | |
| 290 | -if(isset($_GET["mapext"])){ | |
| 291 | - $mapext = explode(" ",$_GET["mapext"]); | |
| 292 | - //para evitar erro quando o mapa e continuo | |
| 293 | - if($mapext[0] == $mapext[2] && $mapext[1] == $mapext[3]){ | |
| 294 | - exit; | |
| 295 | - } | |
| 296 | - $mapa->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]); | |
| 297 | -} | |
| 298 | -// | |
| 299 | -//qd a cahamda e para um WMS, redireciona para ogc.php | |
| 300 | -// | |
| 301 | -if($_GET["REQUEST"] == "getlegendgraphic" || $_GET["REQUEST"] == "getfeatureinfo" || $_GET["REQUEST"] == "GetFeatureInfo" || $_GET["REQUEST"] == "getfeature"){ | |
| 302 | - $req = ms_newowsrequestobj(); | |
| 303 | - if($_GET["BBOX"]){ | |
| 304 | - $_GET["BBOX"] = str_replace(" ",",",$_GET["BBOX"]); | |
| 305 | - } | |
| 306 | - $_GET = array_merge($_GET,$_POST); | |
| 307 | - | |
| 308 | - foreach ($_GET as $k=>$v){ | |
| 309 | - $req->setParameter($k, $v); | |
| 310 | - } | |
| 311 | - $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://"; | |
| 312 | - $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; | |
| 313 | - $or = $proto.$server.$_SERVER['PHP_SELF']; | |
| 314 | - $mapa->setmetadata("wfs_onlineresource",$or."?".$_SERVER["QUERY_STRING"]); | |
| 315 | - ms_ioinstallstdouttobuffer(); | |
| 316 | - $mapa->owsdispatch($req); | |
| 317 | - $contenttype = ms_iostripstdoutbuffercontenttype(); | |
| 318 | - header("Content-type: $contenttype"); | |
| 319 | - ms_iogetStdoutBufferBytes(); | |
| 320 | - ms_ioresethandlers(); | |
| 321 | - exit; | |
| 322 | -} | |
| 323 | - | |
| 324 | -$o = $mapa->outputformat; | |
| 325 | -$o->set("imagemode",MS_IMAGEMODE_RGBA); | |
| 326 | - $legenda = $mapa->legend; | |
| 327 | - $legenda->set("status",MS_OFF); | |
| 328 | - $escala = $mapa->scalebar; | |
| 329 | - $escala->set("status",MS_OFF); | |
| 330 | - | |
| 331 | -// | |
| 332 | -//se o layer nao for do tipo fundo | |
| 333 | -// | |
| 334 | -if($_GET["tipolayer"] != "fundo"){ | |
| 335 | - $o->set("transparent",MS_TRUE); | |
| 336 | -} | |
| 337 | - | |
| 338 | -// | |
| 339 | -//se o layer foi marcado para corte altera os parametros para ampliar o mapa | |
| 340 | -//antes de gerar a imagem | |
| 341 | -// | |
| 342 | -if($cortePixels > 0){ | |
| 343 | - //$mapa->prepareImage(); | |
| 344 | - //echo $mapa->scaledenom;exit; | |
| 345 | - $escalaInicial = $mapa->scaledenom; | |
| 346 | - $extensaoInicial = $mapa->extent; | |
| 347 | - $wh = 256+($cortePixels*2); | |
| 348 | - $mapa->setsize($wh,$wh); | |
| 349 | - $ponto = new pointObj(); | |
| 350 | - $ponto->setxy(($wh/2),($wh/2)); | |
| 351 | - $mapa->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); | |
| 352 | -} | |
| 353 | - | |
| 354 | -//se nao houver selecao | |
| 355 | -if($qy != true){ | |
| 356 | - $img = $mapa->draw(); | |
| 357 | -} | |
| 358 | -else{ | |
| 359 | - $handle = fopen ($qyfile, "r"); | |
| 360 | - $conteudo = fread ($handle, filesize ($qyfile)); | |
| 361 | - fclose ($handle); | |
| 362 | - $shp = unserialize($conteudo); | |
| 363 | - $l = $mapa->getLayerByname($_GET["layer"]); | |
| 364 | - if ($l->connectiontype != MS_POSTGIS){ | |
| 365 | - $indxlayer = $l->index; | |
| 366 | - foreach ($shp as $indx) | |
| 367 | - {$mapa->querybyindex($indxlayer,-1,$indx,MS_TRUE);} | |
| 368 | - $qm = $mapa->querymap; | |
| 369 | - $qm->set("width",$map_size[0]); | |
| 370 | - $qm->set("height",$map_size[1]); | |
| 371 | - $img = $mapa->drawQuery(); | |
| 372 | - } | |
| 373 | - else{ | |
| 374 | - $img = $mapa->draw(); | |
| 375 | - $c = $mapa->querymap->color; | |
| 376 | - $numclasses = $l->numclasses; | |
| 377 | - if ($numclasses > 0) | |
| 378 | - { | |
| 379 | - $classe0 = $l->getClass(0); | |
| 380 | - $classe0->setexpression(""); | |
| 381 | - $classe0->set("name"," "); | |
| 382 | - for ($i=1; $i < $numclasses; ++$i) | |
| 383 | - { | |
| 384 | - $classe = $l->getClass($i); | |
| 385 | - $classe->set("status",MS_DELETE); | |
| 386 | - } | |
| 387 | - } | |
| 388 | - $cor = $classe0->getstyle(0)->color; | |
| 389 | - $cor->setrgb($c->red,$c->green,$c->blue); | |
| 390 | - //$cor = $classe0->getstyle(0)->outlinecolor; | |
| 391 | - //$cor->setrgb($c->red,$c->green,$c->blue); | |
| 392 | - $status = $l->open(); | |
| 393 | - $status = $l->whichShapes($mapa->extent); | |
| 394 | - while ($shape = $l->nextShape()) | |
| 395 | - { | |
| 396 | - if(in_array($shape->index,$shp)) | |
| 397 | - $shape->draw($mapa,$l,$img); | |
| 398 | - } | |
| 399 | - $l->close(); | |
| 400 | - } | |
| 401 | - $cache = false; | |
| 402 | -} | |
| 403 | -//nao usa o cache pois e necessario processar a imagem com alguma rotina de filtro | |
| 404 | -if($_GET["TIPOIMAGEM"] != "" && $_GET["TIPOIMAGEM"] != "nenhum"){ | |
| 405 | - if($img->imagepath == "") | |
| 406 | - {echo "Erro IMAGEPATH vazio";exit;} | |
| 407 | - $nomer = ($img->imagepath)."filtroimgtemp".nomeRand().".png"; | |
| 408 | - $img->saveImage($nomer); | |
| 409 | - // | |
| 410 | - //corta a imagem gerada para voltar ao tamanho normal | |
| 411 | - // | |
| 412 | - if($cortePixels > 0){ | |
| 413 | - cortaImagemDisco($nomer,$cortePixels,256); | |
| 414 | - } | |
| 415 | - filtraImg($nomer,$_GET["TIPOIMAGEM"]); | |
| 416 | - $img = imagecreatefrompng($nomer); | |
| 417 | - imagealphablending($img, false); | |
| 418 | - imagesavealpha($img, true); | |
| 419 | - cabecalhoImagem($nomer); | |
| 420 | - imagepng($img); | |
| 421 | - imagedestroy($img); | |
| 422 | -} | |
| 423 | -else{ | |
| 424 | - if($cache == true && $_GET["cache"] != "nao"){ | |
| 425 | - //cache ativo. Salva a imagem em cache | |
| 426 | - $nomer = salvaCacheImagem($cachedir,$map_fileX,$_GET["tms"]); | |
| 427 | - cabecalhoImagem($nomer); | |
| 428 | - if($_SESSION["i3georendermode"] == 2){ | |
| 429 | - header("X-Sendfile: $nomer"); | |
| 430 | - } | |
| 431 | - else{ | |
| 432 | - readfile($nomer); | |
| 433 | - } | |
| 434 | - } | |
| 435 | - else{ | |
| 436 | - //cache inativo | |
| 437 | - if($img->imagepath == ""){ | |
| 438 | - ilegal(); | |
| 439 | - } | |
| 440 | - //se for necessario cortar a imagem, $img->saveImage() nao funciona | |
| 441 | - if($_SESSION["i3georendermode"] == 0 || ($_SESSION["i3georendermode"] == 1 && $cortePixels > 0)){ | |
| 442 | - $nomer = ($img->imagepath)."temp".nomeRand().".png"; | |
| 443 | - $img->saveImage($nomer); | |
| 444 | - // | |
| 445 | - //corta a imagem gerada para voltar ao tamanho normal | |
| 446 | - // | |
| 447 | - if($cortePixels > 0){ | |
| 448 | - $img = cortaImagemDisco($nomer,$cortePixels,256); | |
| 449 | - } | |
| 450 | - else{ | |
| 451 | - $img = imagecreatefrompng($nomer); | |
| 452 | - imagealphablending($img, false); | |
| 453 | - imagesavealpha($img, true); | |
| 454 | - } | |
| 455 | - cabecalhoImagem($nomer); | |
| 456 | - imagepng($img); | |
| 457 | - imagedestroy($img); | |
| 458 | - exit; | |
| 459 | - } | |
| 460 | - if($_SESSION["i3georendermode"] == 1){ | |
| 461 | - ob_clean(); | |
| 462 | - header('Content-Type: image/png'); | |
| 463 | - $img->saveImage(); | |
| 464 | - } | |
| 465 | - if($_SESSION["i3georendermode"] == 2){ | |
| 466 | - $nomer = ($img->imagepath)."temp".nomeRand().".png"; | |
| 467 | - $img->saveImage($nomer); | |
| 468 | - // | |
| 469 | - //corta a imagem gerada para voltar ao tamanho normal | |
| 470 | - // | |
| 471 | - if($cortePixels > 0){ | |
| 472 | - $img = cortaImagemDisco($nomer,$cortePixels,256); | |
| 473 | - } | |
| 474 | - cabecalhoImagem($nomer); | |
| 475 | - header("X-Sendfile: $nomer"); | |
| 476 | - } | |
| 477 | - } | |
| 478 | -} | |
| 479 | -function cabecalhoImagem($nome){ | |
| 480 | - if(ob_get_contents()){ | |
| 481 | - ob_clean(); | |
| 482 | - } | |
| 483 | - $lastModified=filemtime($nome); | |
| 484 | - //set last-modified header | |
| 485 | - header("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastModified)." GMT"); | |
| 486 | - //make sure caching is turned on | |
| 487 | - header('Cache-Control: public,max-age=86400'); //24 horas | |
| 488 | - header("Content-type: image/png"); | |
| 489 | - header("Etag: " . md5($nome)); | |
| 490 | - //check if page has changed. If not, send 304 and exit | |
| 491 | - if (array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) { | |
| 492 | - $if_modified_since = strtotime(preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE'])); | |
| 493 | - if ($if_modified_since >= $lastModified) { // Is the Cached version the most recent? | |
| 494 | - header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified'); | |
| 495 | - exit(); | |
| 496 | - } | |
| 497 | - } | |
| 498 | -} | |
| 499 | -function salvaCacheImagem($cachedir,$map,$tms){ | |
| 500 | - global $img,$cortePixels; | |
| 501 | - if($cachedir == ""){ | |
| 502 | - $nome = dirname(dirname($map))."/cache".$tms; | |
| 69 | + | |
| 70 | +if (isset ( $_GET ["tms"] )) { | |
| 71 | + $_GET ["WIDTH"] = 256; | |
| 72 | + $_GET ["HEIGHT"] = 256; | |
| 73 | + $temp = explode ( "/", $_GET ["tms"] ); | |
| 74 | + $z = $temp [2]; | |
| 75 | + $x = $temp [3]; | |
| 76 | + $y = str_replace ( ".png", "", $temp [4] ); | |
| 77 | + | |
| 78 | + $n = pow ( 2, $z + 1 ); | |
| 79 | + $lon1 = $x / $n * 360.0 - 180.0; | |
| 80 | + $lon2 = ($x + 1) / $n * 360.0 - 180.0; | |
| 81 | + $n = pow ( 2, $z ); | |
| 82 | + $lat1 = $y / $n * 180.0 - 90.0; | |
| 83 | + $lat2 = ($y + 1) / $n * 180.0 - 90; | |
| 84 | + $_GET ["BBOX"] = $lon1 . " " . $lat1 . " " . $lon2 . " " . $lat2; | |
| 85 | +} | |
| 86 | + | |
| 87 | +// para o caso da versao 3 do OpenLayers | |
| 88 | +if (isset ( $_GET ["X"] ) && ! ($_GET ["REQUEST"] == "getfeatureinfo" || $_GET ["REQUEST"] == "GetFeatureInfo" || strtolower ( $_GET ["REQUEST"] ) == "getfeature")) { | |
| 89 | + $box = str_replace ( " ", ",", $_GET ["BBOX"] ); | |
| 90 | + $box = explode ( ",", $box ); | |
| 91 | + $res = ($box [2] + 180) - ($box [0] + 180); | |
| 92 | + $res = $res / 256; | |
| 93 | + $z = intval ( (0.703125 / $res) / 4 ) + 1; | |
| 94 | + $x = floor ( (($box [0] + 180) / 360) * pow ( 2, $z ) ); | |
| 95 | + $y = floor ( (1 - log ( tan ( deg2rad ( $box [3] ) ) + 1 / cos ( deg2rad ( $box [3] ) ) ) / pi ()) / 2 * pow ( 2, $z ) ); | |
| 96 | + | |
| 97 | + $_GET ["WIDTH"] = 256; | |
| 98 | + $_GET ["HEIGHT"] = 256; | |
| 99 | + $_GET ["tms"] = "/" . $_GET ["layer"] . "/" . $z . "/" . $x . "/" . $y . ".png"; | |
| 100 | +} | |
| 101 | + | |
| 102 | +if (isset ( $_GET ["TileMatrix"] )) { | |
| 103 | + $_GET ["WIDTH"] = 256; | |
| 104 | + $_GET ["HEIGHT"] = 256; | |
| 105 | + $z = $_GET ["TileMatrix"]; | |
| 106 | + $x = $_GET ["TileCol"]; | |
| 107 | + $y = $_GET ["TileRow"]; | |
| 108 | + // calcula resolucoes | |
| 109 | + $res = array (); | |
| 110 | + $temp = 0.703125; | |
| 111 | + for($i = 0; $i < 40; $i ++) { | |
| 112 | + $res [] = $temp; | |
| 113 | + $temp = $temp / 2; | |
| 503 | 114 | } |
| 504 | - else{ | |
| 505 | - $nome = $cachedir.$tms; | |
| 506 | - } | |
| 507 | - $nome = str_replace(".png","",$nome); | |
| 508 | - $nome = $nome.".png"; | |
| 509 | - if(!file_exists($nome)){ | |
| 510 | - if(!file_exists(dirname($nome))){ | |
| 511 | - @mkdir(dirname($nome),0744,true); | |
| 512 | - chmod(dirname($nome),0744); | |
| 513 | - } | |
| 514 | - error_log("salvando imagem"); | |
| 515 | - $img->saveImage($nome); | |
| 516 | - // | |
| 517 | - //corta a imagem gerada para voltar ao tamanho normal | |
| 518 | - // | |
| 519 | - if($cortePixels > 0){ | |
| 520 | - $img = cortaImagemDisco($nome,$cortePixels,256); | |
| 521 | - } | |
| 522 | - chmod($nome,0744); | |
| 115 | + $_GET ["tms"] = "/wmts/" . $_GET ["layer"] . "/" . $z . "/" . $x . "/" . $y . ".png"; | |
| 116 | + if ($z . "/" . $x . "/" . $y == "0/0/0" || $x == - 1 || $y == - 1) { | |
| 117 | + return; | |
| 118 | + } | |
| 119 | + $top_left_minx = - 180; | |
| 120 | + $top_left_maxy = 90; | |
| 121 | + | |
| 122 | + $x_size = $res [$z - 1] * 256; | |
| 123 | + $y_size = $x_size; | |
| 124 | + | |
| 125 | + $lon1 = $top_left_minx + ($x * $x_size); | |
| 126 | + $lat1 = $top_left_maxy - ($y * $y_size) - $y_size; | |
| 127 | + $lon2 = $top_left_minx + ($x * $x_size) + $x_size; | |
| 128 | + $lat2 = $top_left_maxy - ($y * $y_size); | |
| 129 | + | |
| 130 | + $_GET ["BBOX"] = $lon1 . " " . $lat1 . " " . $lon2 . " " . $lat2; | |
| 131 | +} | |
| 132 | + | |
| 133 | +$map_fileX = $_SESSION ["map_file"]; | |
| 134 | +// | |
| 135 | +// verifica se o request e OGC | |
| 136 | +if (! empty ( $_GET ["request"] )) { | |
| 137 | + $_GET ["REQUEST"] = $_GET ["request"]; | |
| 138 | +} | |
| 139 | +// | |
| 140 | +// resolve o problema da selecao nas versoes mais recentes nova do mapserver | |
| 141 | +// | |
| 142 | +$qyfile = dirname ( $map_fileX ) . "/" . $_GET ["layer"] . "_qy.map"; | |
| 143 | +$qy = file_exists ( $qyfile ); | |
| 144 | + | |
| 145 | +if ($_GET ["REQUEST"] == "getlegendgraphic" || $_GET ["REQUEST"] == "getfeatureinfo" || $_GET ["REQUEST"] == "GetFeatureInfo" || strtolower ( $_GET ["REQUEST"] ) == "getfeature") { | |
| 146 | + $_GET ["DESLIGACACHE"] = "sim"; | |
| 147 | +} else { | |
| 148 | + if ($qy == false && $_GET ["cache"] == "sim" && $_GET ["DESLIGACACHE"] != "sim") { | |
| 149 | + carregaCacheImagem ( $_SESSION ["cachedir"], $_SESSION ["map_file"], $_GET ["tms"], $_SESSION ["i3georendermode"] ); | |
| 150 | + } | |
| 151 | +} | |
| 152 | +// | |
| 153 | +// map_fileX e para o caso register_globals = On no PHP.INI | |
| 154 | +// | |
| 155 | +if (isset ( $_GET ["tipolayer"] ) && $_GET ["tipolayer"] == "fundo") { | |
| 156 | + $map_fileX = str_replace ( ".map", "fundo.map", $map_fileX ); | |
| 157 | +} | |
| 158 | +$postgis_mapa = $_SESSION ["postgis_mapa"]; | |
| 159 | + | |
| 160 | +// por seguranca | |
| 161 | +include_once ("funcoes_gerais.php"); | |
| 162 | + | |
| 163 | +$logExec = $_SESSION ["logExec"]; | |
| 164 | + | |
| 165 | +if (isset ( $logExec ) && $logExec ["mapa_"] == true) { | |
| 166 | + i3GeoLog ( "prog: mapa_openlayers url: " . implode ( "&", array_merge ( $_GET, $_POST ) ), $_SESSION ["dir_tmp"] ); | |
| 167 | +} | |
| 168 | + | |
| 169 | +//restauraCon ( $map_fileX, $postgis_mapa ); | |
| 170 | + | |
| 171 | +$cachedir = $_SESSION ["cachedir"]; | |
| 172 | +if (isset ( $_GET ["BBOX"] )) { | |
| 173 | + $_GET ["mapext"] = str_replace ( ",", " ", $_GET ["BBOX"] ); | |
| 174 | + $_GET ["map_size"] = $_GET ["WIDTH"] . " " . $_GET ["HEIGHT"]; | |
| 175 | +} | |
| 176 | +$_GET ["TIPOIMAGEM"] = trim ( $_GET ["TIPOIMAGEM"] ); | |
| 177 | +$mapa = ms_newMapObj ( $map_fileX ); | |
| 178 | +// | |
| 179 | +// processa os layers do mapfile | |
| 180 | +// | |
| 181 | +$numlayers = $mapa->numlayers; | |
| 182 | +$cache = false; | |
| 183 | +for($i = 0; $i < $numlayers; ++ $i) { | |
| 184 | + $l = $mapa->getLayer ( $i ); | |
| 185 | + $layerName = $l->name; | |
| 186 | + if ($layerName != $_GET ["layer"]) { | |
| 187 | + $l->set ( "status", MS_OFF ); | |
| 188 | + } | |
| 189 | + // no caso de haver uma mascara definida no layer | |
| 190 | + if ($versao ["inteiro"] >= 60200) { | |
| 191 | + if ($l->mask != "") { | |
| 192 | + $lmask = $mapa->getlayerbyname ( $l->mask ); | |
| 193 | + if (! empty ( $postgis_mapa )) { | |
| 194 | + if ($lmask->connectiontype == MS_POSTGIS) { | |
| 195 | + $lcon = $l->connection; | |
| 196 | + if (($lcon == " ") || ($lcon == "") || (in_array ( $lcon, array_keys ( $postgis_mapa ) ))) { | |
| 197 | + if (($lcon == " ") || ($lcon == "")) { | |
| 198 | + $lmask->set ( "connection", $postgis_mapa ); | |
| 199 | + } else { | |
| 200 | + $lmask->set ( "connection", $postgis_mapa [$lcon] ); | |
| 201 | + } | |
| 202 | + } | |
| 203 | + } | |
| 204 | + } | |
| 205 | + } | |
| 206 | + } | |
| 207 | + if ($layerName == $_GET ["layer"] || $l->group == $_GET ["layer"] && $l->group != "") { | |
| 208 | + if ($l->getmetadata ( "classesnome" ) != "" || $l->getmetadata ( "palletefile" ) != "") { | |
| 209 | + if (! function_exists ( "autoClasses" )) { | |
| 210 | + include_once ("funcoes_gerais.php"); | |
| 211 | + } | |
| 212 | + autoClasses ( $l, $mapa ); | |
| 213 | + } | |
| 214 | + // | |
| 215 | + // numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos | |
| 216 | + // | |
| 217 | + $cortePixels = 0; | |
| 218 | + if ($l->getmetadata ( "cortepixels" ) != "" && $qy == false) { | |
| 219 | + $cortePixels = $l->getmetadata ( "cortepixels" ); | |
| 220 | + } | |
| 221 | + $l->set ( "status", MS_DEFAULT ); | |
| 222 | + $l->set ( "template", "none.htm" ); | |
| 223 | + if (! empty ( $postgis_mapa )) { | |
| 224 | + if ($l->connectiontype == MS_POSTGIS) { | |
| 225 | + $lcon = $l->connection; | |
| 226 | + if (($lcon == " ") || ($lcon == "") || (in_array ( $lcon, array_keys ( $postgis_mapa ) ))) { | |
| 227 | + if (($lcon == " ") || ($lcon == "")) { | |
| 228 | + $l->set ( "connection", $postgis_mapa ); | |
| 229 | + } else { | |
| 230 | + $l->set ( "connection", $postgis_mapa [$lcon] ); | |
| 231 | + } | |
| 232 | + } | |
| 233 | + } | |
| 234 | + } | |
| 235 | + } | |
| 236 | + if ($_GET ["REQUEST"] == "getlegendgraphic") { | |
| 237 | + $nclass = $l->numclasses; | |
| 238 | + for($ic = 0; $ic < $nclass; $ic ++) { | |
| 239 | + $classe = $l->getclass ( $ic ); | |
| 240 | + if ($classe->title === "") { | |
| 241 | + $classe->title = $classe->name; | |
| 242 | + } | |
| 243 | + } | |
| 244 | + } | |
| 245 | + if ($layerName == $_GET ["layer"]) { | |
| 246 | + if (strtolower ( $l->getmetadata ( "cache" ) ) == "sim") { | |
| 247 | + $cache = true; | |
| 248 | + $nomecache = $l->getmetadata ( "nomeoriginal" ); | |
| 249 | + if ($nomecache == "") { | |
| 250 | + $nomecache = $layerName; | |
| 251 | + } | |
| 252 | + } | |
| 253 | + if ($_GET ["REQUEST"] == "getfeatureinfo" || $_GET ["REQUEST"] == "GetFeatureInfo" || strtolower ( $_GET ["REQUEST"] ) == "getfeature") { | |
| 254 | + $l->setmetadata ( "gml_include_items", "all" ); | |
| 255 | + $l->set ( "template", "none.htm" ); | |
| 256 | + $l->setmetadata ( "WMS_INCLUDE_ITEMS", "all" ); | |
| 257 | + $l->setmetadata ( "WFS_INCLUDE_ITEMS", "all" ); | |
| 258 | + $l->setmetadata ( "ows_enable_request", "*" ); | |
| 259 | + $l->set ( "dump", MS_TRUE ); | |
| 260 | + $l->setmetadata ( "ows_srs", "AUTO" ); | |
| 261 | + if (strtolower ( $_GET ["REQUEST"] ) == "getfeature") { | |
| 262 | + $_GET ["TYPENAME"] = $l->name; | |
| 263 | + } | |
| 264 | + } | |
| 265 | + } | |
| 266 | +} | |
| 267 | +if (! function_exists ( 'imagepng' )) { | |
| 268 | + $_GET ["TIPOIMAGEM"] = ""; | |
| 269 | +} | |
| 270 | + | |
| 271 | +if ($_GET ["layer"] == "") { | |
| 272 | + $cache = true; | |
| 273 | +} | |
| 274 | +if (($_GET == false) || ($qy) || (strtolower ( $_GET ["DESLIGACACHE"] ) == "sim")) { | |
| 275 | + $cache = false; | |
| 276 | +} elseif ($_GET ["TIPOIMAGEM"] != "" && $_GET ["TIPOIMAGEM"] != "nenhum") { | |
| 277 | + $cache = false; | |
| 278 | +} | |
| 279 | + | |
| 280 | +if ($cache == true && $_GET ["cache"] != "nao") { | |
| 281 | + carregaCacheImagem ( $cachedir, $_SESSION ["map_file"], $_GET ["tms"] ); | |
| 282 | +} | |
| 283 | +if (isset ( $_GET ["map_size"] )) { | |
| 284 | + $map_size = explode ( " ", $_GET ["map_size"] ); | |
| 285 | + $mapa->setsize ( $map_size [0], $map_size [1] ); | |
| 286 | +} | |
| 287 | + | |
| 288 | +if (isset ( $_GET ["mapext"] )) { | |
| 289 | + $mapext = explode ( " ", $_GET ["mapext"] ); | |
| 290 | + // para evitar erro quando o mapa e continuo | |
| 291 | + if ($mapext [0] == $mapext [2] && $mapext [1] == $mapext [3]) { | |
| 292 | + exit (); | |
| 293 | + } | |
| 294 | + $mapa->setExtent ( $mapext [0], $mapext [1], $mapext [2], $mapext [3] ); | |
| 295 | +} | |
| 296 | +// | |
| 297 | +// qd a cahamda e para um WMS, redireciona para ogc.php | |
| 298 | +// | |
| 299 | +if ($_GET ["REQUEST"] == "getlegendgraphic" || $_GET ["REQUEST"] == "getfeatureinfo" || $_GET ["REQUEST"] == "GetFeatureInfo" || $_GET ["REQUEST"] == "getfeature") { | |
| 300 | + $req = ms_newowsrequestobj (); | |
| 301 | + if ($_GET ["BBOX"]) { | |
| 302 | + $_GET ["BBOX"] = str_replace ( " ", ",", $_GET ["BBOX"] ); | |
| 303 | + } | |
| 304 | + $_GET = array_merge ( $_GET, $_POST ); | |
| 305 | + | |
| 306 | + foreach ( $_GET as $k => $v ) { | |
| 307 | + $req->setParameter ( $k, $v ); | |
| 308 | + } | |
| 309 | + $proto = "http" . ((isset ( $_SERVER ['HTTPS'] ) && $_SERVER ['HTTPS'] == "on") ? "s" : "") . "://"; | |
| 310 | + $server = isset ( $_SERVER ['HTTP_HOST'] ) ? $_SERVER ['HTTP_HOST'] : $_SERVER ['SERVER_NAME']; | |
| 311 | + $or = $proto . $server . $_SERVER ['PHP_SELF']; | |
| 312 | + $mapa->setmetadata ( "wfs_onlineresource", $or . "?" . $_SERVER ["QUERY_STRING"] ); | |
| 313 | + ms_ioinstallstdouttobuffer (); | |
| 314 | + $mapa->owsdispatch ( $req ); | |
| 315 | + $contenttype = ms_iostripstdoutbuffercontenttype (); | |
| 316 | + header ( "Content-type: $contenttype" ); | |
| 317 | + ms_iogetStdoutBufferBytes (); | |
| 318 | + ms_ioresethandlers (); | |
| 319 | + exit (); | |
| 320 | +} | |
| 321 | + | |
| 322 | +$o = $mapa->outputformat; | |
| 323 | +$o->set ( "imagemode", MS_IMAGEMODE_RGBA ); | |
| 324 | +$legenda = $mapa->legend; | |
| 325 | +$legenda->set ( "status", MS_OFF ); | |
| 326 | +$escala = $mapa->scalebar; | |
| 327 | +$escala->set ( "status", MS_OFF ); | |
| 328 | + | |
| 329 | +// | |
| 330 | +// se o layer nao for do tipo fundo | |
| 331 | +// | |
| 332 | +if ($_GET ["tipolayer"] != "fundo") { | |
| 333 | + $o->set ( "transparent", MS_TRUE ); | |
| 334 | +} | |
| 335 | + | |
| 336 | +// | |
| 337 | +// se o layer foi marcado para corte altera os parametros para ampliar o mapa | |
| 338 | +// antes de gerar a imagem | |
| 339 | +// | |
| 340 | +if ($cortePixels > 0) { | |
| 341 | + // $mapa->prepareImage(); | |
| 342 | + // echo $mapa->scaledenom;exit; | |
| 343 | + $escalaInicial = $mapa->scaledenom; | |
| 344 | + $extensaoInicial = $mapa->extent; | |
| 345 | + $wh = 256 + ($cortePixels * 2); | |
| 346 | + $mapa->setsize ( $wh, $wh ); | |
| 347 | + $ponto = new pointObj (); | |
| 348 | + $ponto->setxy ( ($wh / 2), ($wh / 2) ); | |
| 349 | + $mapa->zoomScale ( $escalaInicial, $ponto, $wh, $wh, $extensaoInicial ); | |
| 350 | +} | |
| 351 | + | |
| 352 | +// se nao houver selecao | |
| 353 | +if ($qy != true) { | |
| 354 | + $img = $mapa->draw (); | |
| 355 | +} else { | |
| 356 | + $handle = fopen ( $qyfile, "r" ); | |
| 357 | + $conteudo = fread ( $handle, filesize ( $qyfile ) ); | |
| 358 | + fclose ( $handle ); | |
| 359 | + $shp = unserialize ( $conteudo ); | |
| 360 | + $l = $mapa->getLayerByname ( $_GET ["layer"] ); | |
| 361 | + if ($l->connectiontype != MS_POSTGIS) { | |
| 362 | + $indxlayer = $l->index; | |
| 363 | + foreach ( $shp as $indx ) { | |
| 364 | + $mapa->querybyindex ( $indxlayer, - 1, $indx, MS_TRUE ); | |
| 365 | + } | |
| 366 | + $qm = $mapa->querymap; | |
| 367 | + $qm->set ( "width", $map_size [0] ); | |
| 368 | + $qm->set ( "height", $map_size [1] ); | |
| 369 | + $img = $mapa->drawQuery (); | |
| 370 | + } else { | |
| 371 | + $img = $mapa->draw (); | |
| 372 | + $c = $mapa->querymap->color; | |
| 373 | + $numclasses = $l->numclasses; | |
| 374 | + if ($numclasses > 0) { | |
| 375 | + $classe0 = $l->getClass ( 0 ); | |
| 376 | + $classe0->setexpression ( "" ); | |
| 377 | + $classe0->set ( "name", " " ); | |
| 378 | + for($i = 1; $i < $numclasses; ++ $i) { | |
| 379 | + $classe = $l->getClass ( $i ); | |
| 380 | + $classe->set ( "status", MS_DELETE ); | |
| 381 | + } | |
| 382 | + } | |
| 383 | + $cor = $classe0->getstyle ( 0 )->color; | |
| 384 | + $cor->setrgb ( $c->red, $c->green, $c->blue ); | |
| 385 | + // $cor = $classe0->getstyle(0)->outlinecolor; | |
| 386 | + // $cor->setrgb($c->red,$c->green,$c->blue); | |
| 387 | + $status = $l->open (); | |
| 388 | + $status = $l->whichShapes ( $mapa->extent ); | |
| 389 | + while ( $shape = $l->nextShape () ) { | |
| 390 | + if (in_array ( $shape->index, $shp )) | |
| 391 | + $shape->draw ( $mapa, $l, $img ); | |
| 392 | + } | |
| 393 | + $l->close (); | |
| 394 | + } | |
| 395 | + $cache = false; | |
| 396 | +} | |
| 397 | +// nao usa o cache pois e necessario processar a imagem com alguma rotina de filtro | |
| 398 | +if ($_GET ["TIPOIMAGEM"] != "" && $_GET ["TIPOIMAGEM"] != "nenhum") { | |
| 399 | + if ($img->imagepath == "") { | |
| 400 | + echo "Erro IMAGEPATH vazio"; | |
| 401 | + exit (); | |
| 402 | + } | |
| 403 | + $nomer = ($img->imagepath) . "filtroimgtemp" . nomeRand () . ".png"; | |
| 404 | + $img->saveImage ( $nomer ); | |
| 405 | + // | |
| 406 | + // corta a imagem gerada para voltar ao tamanho normal | |
| 407 | + // | |
| 408 | + if ($cortePixels > 0) { | |
| 409 | + cortaImagemDisco ( $nomer, $cortePixels, 256 ); | |
| 410 | + } | |
| 411 | + filtraImg ( $nomer, $_GET ["TIPOIMAGEM"] ); | |
| 412 | + $img = imagecreatefrompng ( $nomer ); | |
| 413 | + imagealphablending ( $img, false ); | |
| 414 | + imagesavealpha ( $img, true ); | |
| 415 | + cabecalhoImagem ( $nomer ); | |
| 416 | + imagepng ( $img ); | |
| 417 | + imagedestroy ( $img ); | |
| 418 | +} else { | |
| 419 | + if ($cache == true && $_GET ["cache"] != "nao") { | |
| 420 | + // cache ativo. Salva a imagem em cache | |
| 421 | + $nomer = salvaCacheImagem ( $cachedir, $map_fileX, $_GET ["tms"] ); | |
| 422 | + cabecalhoImagem ( $nomer ); | |
| 423 | + if ($_SESSION ["i3georendermode"] == 2) { | |
| 424 | + header ( "X-Sendfile: $nomer" ); | |
| 425 | + } else { | |
| 426 | + readfile ( $nomer ); | |
| 427 | + } | |
| 428 | + } else { | |
| 429 | + // cache inativo | |
| 430 | + if ($img->imagepath == "") { | |
| 431 | + ilegal (); | |
| 432 | + } | |
| 433 | + // se for necessario cortar a imagem, $img->saveImage() nao funciona | |
| 434 | + if ($_SESSION ["i3georendermode"] == 0 || ($_SESSION ["i3georendermode"] == 1 && $cortePixels > 0)) { | |
| 435 | + $nomer = ($img->imagepath) . "temp" . nomeRand () . ".png"; | |
| 436 | + $img->saveImage ( $nomer ); | |
| 437 | + // | |
| 438 | + // corta a imagem gerada para voltar ao tamanho normal | |
| 439 | + // | |
| 440 | + if ($cortePixels > 0) { | |
| 441 | + $img = cortaImagemDisco ( $nomer, $cortePixels, 256 ); | |
| 442 | + } else { | |
| 443 | + $img = imagecreatefrompng ( $nomer ); | |
| 444 | + imagealphablending ( $img, false ); | |
| 445 | + imagesavealpha ( $img, true ); | |
| 446 | + } | |
| 447 | + cabecalhoImagem ( $nomer ); | |
| 448 | + imagepng ( $img ); | |
| 449 | + imagedestroy ( $img ); | |
| 450 | + exit (); | |
| 451 | + } | |
| 452 | + if ($_SESSION ["i3georendermode"] == 1) { | |
| 453 | + ob_clean (); | |
| 454 | + header ( 'Content-Type: image/png' ); | |
| 455 | + $img->saveImage (); | |
| 456 | + } | |
| 457 | + if ($_SESSION ["i3georendermode"] == 2) { | |
| 458 | + $nomer = ($img->imagepath) . "temp" . nomeRand () . ".png"; | |
| 459 | + $img->saveImage ( $nomer ); | |
| 460 | + // | |
| 461 | + // corta a imagem gerada para voltar ao tamanho normal | |
| 462 | + // | |
| 463 | + if ($cortePixels > 0) { | |
| 464 | + $img = cortaImagemDisco ( $nomer, $cortePixels, 256 ); | |
| 465 | + } | |
| 466 | + cabecalhoImagem ( $nomer ); | |
| 467 | + header ( "X-Sendfile: $nomer" ); | |
| 468 | + } | |
| 469 | + } | |
| 470 | +} | |
| 471 | +function cabecalhoImagem($nome) { | |
| 472 | + if (ob_get_contents ()) { | |
| 473 | + ob_clean (); | |
| 474 | + } | |
| 475 | + $lastModified = filemtime ( $nome ); | |
| 476 | + // set last-modified header | |
| 477 | + header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", $lastModified ) . " GMT" ); | |
| 478 | + // make sure caching is turned on | |
| 479 | + header ( 'Cache-Control: public,max-age=86400' ); // 24 horas | |
| 480 | + header ( "Content-type: image/png" ); | |
| 481 | + header ( "Etag: " . md5 ( $nome ) ); | |
| 482 | + // check if page has changed. If not, send 304 and exit | |
| 483 | + if (array_key_exists ( 'HTTP_IF_MODIFIED_SINCE', $_SERVER )) { | |
| 484 | + $if_modified_since = strtotime ( preg_replace ( '/;.*$/', '', $_SERVER ['HTTP_IF_MODIFIED_SINCE'] ) ); | |
| 485 | + if ($if_modified_since >= $lastModified) { // Is the Cached version the most recent? | |
| 486 | + header ( $_SERVER ['SERVER_PROTOCOL'] . ' 304 Not Modified' ); | |
| 487 | + exit (); | |
| 488 | + } | |
| 489 | + } | |
| 490 | +} | |
| 491 | +function salvaCacheImagem($cachedir, $map, $tms) { | |
| 492 | + global $img, $cortePixels; | |
| 493 | + if ($cachedir == "") { | |
| 494 | + $nome = dirname ( dirname ( $map ) ) . "/cache" . $tms; | |
| 495 | + } else { | |
| 496 | + $nome = $cachedir . $tms; | |
| 497 | + } | |
| 498 | + $nome = str_replace ( ".png", "", $nome ); | |
| 499 | + $nome = $nome . ".png"; | |
| 500 | + if (! file_exists ( $nome )) { | |
| 501 | + if (! file_exists ( dirname ( $nome ) )) { | |
| 502 | + @mkdir ( dirname ( $nome ), 0744, true ); | |
| 503 | + chmod ( dirname ( $nome ), 0744 ); | |
| 504 | + } | |
| 505 | + error_log ( "salvando imagem" ); | |
| 506 | + $img->saveImage ( $nome ); | |
| 507 | + // | |
| 508 | + // corta a imagem gerada para voltar ao tamanho normal | |
| 509 | + // | |
| 510 | + if ($cortePixels > 0) { | |
| 511 | + $img = cortaImagemDisco ( $nome, $cortePixels, 256 ); | |
| 512 | + } | |
| 513 | + chmod ( $nome, 0744 ); | |
| 523 | 514 | } |
| 524 | 515 | return $nome; |
| 525 | -} | |
| 526 | -function carregaCacheImagem($cachedir,$map,$tms,$i3georendermode=0){ | |
| 527 | - if($cachedir == ""){ | |
| 528 | - $nome = dirname(dirname($map))."/cache".$tms; | |
| 516 | +} | |
| 517 | +function carregaCacheImagem($cachedir, $map, $tms, $i3georendermode = 0) { | |
| 518 | + if ($cachedir == "") { | |
| 519 | + $nome = dirname ( dirname ( $map ) ) . "/cache" . $tms; | |
| 520 | + } else { | |
| 521 | + $nome = $cachedir . $tms; | |
| 522 | + } | |
| 523 | + $nome = $nome . ".png"; | |
| 524 | + if (file_exists ( $nome )) { | |
| 525 | + cabecalhoImagem ( $nome ); | |
| 526 | + if ($i3georendermode = 0 || $i3georendermode = 1 || empty ( $i3georendermode )) { | |
| 527 | + readfile ( $nome ); | |
| 528 | + } else { | |
| 529 | + header ( "X-Sendfile: $nome" ); | |
| 530 | + } | |
| 531 | + exit (); | |
| 532 | + } | |
| 533 | +} | |
| 534 | +function nomeRand($n = 10) { | |
| 535 | + $nomes = ""; | |
| 536 | + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |
| 537 | + $max = 51; | |
| 538 | + for($i = 0; $i < $n; ++ $i) { | |
| 539 | + $nomes .= $a {mt_rand ( 0, $max )}; | |
| 540 | + } | |
| 541 | + return $nomes; | |
| 542 | +} | |
| 543 | +function filtraImg($nomer, $tipoimagem) { | |
| 544 | + include_once ("classe_imagem.php"); | |
| 545 | + $tiposImagem = explode ( " ", $tipoimagem ); | |
| 546 | + foreach ( $tiposImagem as $tipoimagem ) { | |
| 547 | + $m = new Imagem ( $nomer ); | |
| 548 | + if ($tipoimagem == "cinza") { | |
| 549 | + imagepng ( $m->cinzaNormal (), str_replace ( "\\", "/", $nomer ) ); | |
| 550 | + } | |
| 551 | + if ($tipoimagem == "sepiaclara") { | |
| 552 | + imagepng ( $m->sepiaClara (), str_replace ( "\\", "/", $nomer ) ); | |
| 553 | + } | |
| 554 | + if ($tipoimagem == "sepianormal") { | |
| 555 | + imagepng ( $m->sepiaNormal (), str_replace ( "\\", "/", $nomer ) ); | |
| 556 | + } | |
| 557 | + if ($tipoimagem == "negativo") { | |
| 558 | + imagepng ( $m->negativo (), str_replace ( "\\", "/", $nomer ) ); | |
| 559 | + } | |
| 560 | + if ($tipoimagem == "detectaBordas") { | |
| 561 | + imagepng ( $m->detectaBordas (), str_replace ( "\\", "/", $nomer ) ); | |
| 562 | + } | |
| 563 | + if ($tipoimagem == "embassa") { | |
| 564 | + imagepng ( $m->embassa (), str_replace ( "\\", "/", $nomer ) ); | |
| 565 | + } | |
| 566 | + if ($tipoimagem == "gaussian_blur") { | |
| 567 | + imagepng ( $m->gaussian_blur (), str_replace ( "\\", "/", $nomer ) ); | |
| 568 | + } | |
| 569 | + if ($tipoimagem == "selective_blur") { | |
| 570 | + imagepng ( $m->selective_blur (), str_replace ( "\\", "/", $nomer ) ); | |
| 571 | + } | |
| 572 | + if ($tipoimagem == "mean_removal") { | |
| 573 | + imagepng ( $m->mean_removal (), str_replace ( "\\", "/", $nomer ) ); | |
| 574 | + } | |
| 575 | + if ($tipoimagem == "pixelate") { | |
| 576 | + imagepng ( $m->pixelate (), str_replace ( "\\", "/", $nomer ) ); | |
| 577 | + } | |
| 578 | + } | |
| 579 | +} | |
| 580 | +function inicializa() { | |
| 581 | + ini_set ( "session.use_cookies", 0 ); | |
| 582 | + session_name ( "i3GeoPHP" ); | |
| 583 | + if (@$_GET ["g_sid"]) { | |
| 584 | + session_id ( $_GET ["g_sid"] ); | |
| 585 | + } elseif (@$_COOKIE ["i3GeoPHP"]) { | |
| 586 | + session_id ( $_COOKIE ["i3GeoPHP"] ); | |
| 587 | + } else { | |
| 588 | + ilegal (); | |
| 589 | + } | |
| 590 | + session_start (); | |
| 591 | + if ($_GET ["REQUEST"] == "getfeatureinfo" || $_GET ["REQUEST"] == "GetFeatureInfo" || strtolower ( $_GET ["REQUEST"] ) == "getfeature") { | |
| 592 | + return; | |
| 593 | + } | |
| 594 | + if (@$_SESSION ["fingerprint"]) { | |
| 595 | + $f = explode ( ",", $_SESSION ["fingerprint"] ); | |
| 596 | + if (md5 ( 'I3GEOSEC' . $_SERVER ['HTTP_USER_AGENT'] . session_id () ) != $f [0]) { | |
| 597 | + ilegal (); | |
| 598 | + } | |
| 599 | + } else { | |
| 600 | + exit (); | |
| 529 | 601 | } |
| 530 | - else{ | |
| 531 | - $nome = $cachedir.$tms; | |
| 532 | - } | |
| 533 | - $nome = $nome.".png"; | |
| 534 | - if(file_exists($nome)){ | |
| 535 | - cabecalhoImagem($nome); | |
| 536 | - if($i3georendermode = 0 || $i3georendermode = 1 || empty($i3georendermode)){ | |
| 537 | - readfile($nome); | |
| 538 | - } | |
| 539 | - else{ | |
| 540 | - header("X-Sendfile: $nome"); | |
| 541 | - } | |
| 542 | - exit; | |
| 602 | + if (! isset ( $_SESSION ["map_file"] )) { | |
| 603 | + exit (); | |
| 543 | 604 | } |
| 544 | -} | |
| 545 | -function nomeRand($n=10) | |
| 546 | -{ | |
| 547 | - $nomes = ""; | |
| 548 | - $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |
| 549 | - $max = 51; | |
| 550 | - for($i=0; $i < $n; ++$i) | |
| 551 | - {$nomes .= $a{mt_rand(0, $max)};} | |
| 552 | - return $nomes; | |
| 553 | -} | |
| 554 | -function filtraImg($nomer,$tipoimagem){ | |
| 555 | - include_once("classe_imagem.php"); | |
| 556 | - $tiposImagem = explode(" ",$tipoimagem); | |
| 557 | - foreach ($tiposImagem as $tipoimagem){ | |
| 558 | - $m = new Imagem($nomer); | |
| 559 | - if ($tipoimagem == "cinza") | |
| 560 | - {imagepng($m->cinzaNormal(),str_replace("\\","/",$nomer));} | |
| 561 | - if ($tipoimagem == "sepiaclara") | |
| 562 | - {imagepng($m->sepiaClara(),str_replace("\\","/",$nomer));} | |
| 563 | - if ($tipoimagem == "sepianormal") | |
| 564 | - {imagepng($m->sepiaNormal(),str_replace("\\","/",$nomer));} | |
| 565 | - if ($tipoimagem == "negativo") | |
| 566 | - {imagepng($m->negativo(),str_replace("\\","/",$nomer));} | |
| 567 | - if ($tipoimagem == "detectaBordas") | |
| 568 | - {imagepng($m->detectaBordas(),str_replace("\\","/",$nomer));} | |
| 569 | - if ($tipoimagem == "embassa") | |
| 570 | - {imagepng($m->embassa(),str_replace("\\","/",$nomer));} | |
| 571 | - if ($tipoimagem == "gaussian_blur") | |
| 572 | - {imagepng($m->gaussian_blur(),str_replace("\\","/",$nomer));} | |
| 573 | - if ($tipoimagem == "selective_blur") | |
| 574 | - {imagepng($m->selective_blur(),str_replace("\\","/",$nomer));} | |
| 575 | - if ($tipoimagem == "mean_removal") | |
| 576 | - {imagepng($m->mean_removal(),str_replace("\\","/",$nomer));} | |
| 577 | - if ($tipoimagem == "pixelate") | |
| 578 | - {imagepng($m->pixelate(),str_replace("\\","/",$nomer));} | |
| 579 | - } | |
| 580 | -} | |
| 581 | -function inicializa(){ | |
| 582 | - ini_set("session.use_cookies", 0); | |
| 583 | - session_name("i3GeoPHP"); | |
| 584 | - if(@$_GET["g_sid"]){ | |
| 585 | - session_id($_GET["g_sid"]); | |
| 586 | - } | |
| 587 | - elseif (@$_COOKIE["i3GeoPHP"]){ | |
| 588 | - session_id($_COOKIE["i3GeoPHP"]); | |
| 589 | - } else { | |
| 590 | - ilegal(); | |
| 591 | - } | |
| 592 | - session_start(); | |
| 593 | - if($_GET["REQUEST"] == "getfeatureinfo" || $_GET["REQUEST"] == "GetFeatureInfo" || strtolower($_GET["REQUEST"]) == "getfeature"){ | |
| 594 | - return; | |
| 595 | - } | |
| 596 | - if(@$_SESSION["fingerprint"]){ | |
| 597 | - $f = explode(",",$_SESSION["fingerprint"]); | |
| 598 | - if (md5('I3GEOSEC' . $_SERVER['HTTP_USER_AGENT'] . session_id()) != $f[0] ) | |
| 599 | - {ilegal();} | |
| 600 | - } | |
| 601 | - else{ | |
| 602 | - exit; | |
| 603 | - } | |
| 604 | - if(!isset($_SESSION["map_file"])){ | |
| 605 | - exit; | |
| 606 | - } | |
| 607 | -} | |
| 608 | -function ilegal(){ | |
| 609 | - $img = imagecreatefrompng("../imagens/ilegal.png"); | |
| 610 | - imagealphablending($img, false); | |
| 611 | - imagesavealpha($img, true); | |
| 612 | - ob_clean(); | |
| 613 | - echo header("Content-type: image/png \n\n"); | |
| 614 | - imagepng($img); | |
| 615 | - exit; | |
| 616 | -} | |
| 617 | -/** | |
| 618 | - * Corta uma imagem existente em disco | |
| 619 | - */ | |
| 620 | -function cortaImagemDisco($arquivo,$cortePixels,$tamanhoFinal=256){ | |
| 621 | - $img = imagecreatefrompng($arquivo); | |
| 622 | - $imgc = imagecreatetruecolor($tamanhoFinal,$tamanhoFinal); | |
| 623 | - //necessario, sem isso algumas imagens sao geradas de forma errada | |
| 624 | - imagesavealpha($imgc, true); | |
| 625 | - $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127); | |
| 626 | - imagefill($imgc, 0, 0, $color); | |
| 627 | - imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , $tamanhoFinal, $tamanhoFinal ); | |
| 628 | - imagepng($imgc,$arquivo); | |
| 629 | - return $imgc; | |
| 630 | -} | |
| 605 | +} | |
| 606 | +function ilegal() { | |
| 607 | + $img = imagecreatefrompng ( "../imagens/ilegal.png" ); | |
| 608 | + imagealphablending ( $img, false ); | |
| 609 | + imagesavealpha ( $img, true ); | |
| 610 | + ob_clean (); | |
| 611 | + echo header ( "Content-type: image/png \n\n" ); | |
| 612 | + imagepng ( $img ); | |
| 613 | + exit (); | |
| 614 | +} | |
| 615 | +/** | |
| 616 | + * Corta uma imagem existente em disco | |
| 617 | + */ | |
| 618 | +function cortaImagemDisco($arquivo, $cortePixels, $tamanhoFinal = 256) { | |
| 619 | + $img = imagecreatefrompng ( $arquivo ); | |
| 620 | + $imgc = imagecreatetruecolor ( $tamanhoFinal, $tamanhoFinal ); | |
| 621 | + // necessario, sem isso algumas imagens sao geradas de forma errada | |
| 622 | + imagesavealpha ( $imgc, true ); | |
| 623 | + $color = imagecolorallocatealpha ( $imgc, 0x00, 0x00, 0x00, 127 ); | |
| 624 | + imagefill ( $imgc, 0, 0, $color ); | |
| 625 | + imagecopy ( $imgc, $img, 0, 0, $cortePixels, $cortePixels, $tamanhoFinal, $tamanhoFinal ); | |
| 626 | + imagepng ( $imgc, $arquivo ); | |
| 627 | + return $imgc; | |
| 628 | +} | |
| 631 | 629 | ?> | ... | ... |