2010-06-05 24 views
1

je fichier A2.txt avec coordonnées x1, y1, x2, y2 dans chaque ligne comme ci-dessous:ligne de tirage avec php en utilisant les coordonnées du fichier txt

204 13 225 59 
225 59 226 84 
226 84 219 111 
219 111 244 192 
244 192 236 209 
236 209 254 223 
254 223 276 258 
276 258 237 337 

dans mon fichier php j'ai ce code. Ce code devrait prendre chaque ligne et dessiner une ligne avec la coordonnée de la ligne. Mais quelque chose clochait rien cause était nul: /:

<?php 
$plik = fopen("A2.txt", 'r') or die("blad otarcia"); 
while(!feof($plik)) 
{ 
    $l = fgets($plik,20); 
    $k = explode(' ',$l); 

    imageline ($mapa , $k[0] , $k[1] , $k[2] , $k[3] , $kolor); 
} 
imagejpeg($mapa); 
imagedestroy($mapa); 
fclose($plik) ; 
?> 

Si je imagejpeg et imagedestroy pendant que son tirage au sort seulement la première ligne. Que faire pour dessiner chaque ligne ?? S'il vous plaît aider :)

+1

Comment est 'mapa' de $ créé? – Matt

+0

qu'est-ce que cela signifie "dans tout"? à l'intérieur de la boucle while? –

Répondre

5

Unstructured, pas de nettoyage ou d'erreur exemple vérifier:

<?php 
$plik = <<<EOD 
204 13 225 59 
225 59 226 84 
226 84 219 111 
219 111 244 192 
244 192 236 209 
236 209 254 223 
254 223 276 258 
276 258 237 337 
EOD; 

$plik = preg_replace('/\r\n?/', "\n", $plik); 

$arr = explode("\n", $plik); 
array_walk($arr, 
    function (&$value, $key) { 
     $value = explode(' ', $value); 
    } 
); 

$minwidth = array_reduce($arr, 
    function ($res, $val) { return min($res, $val[0], $val[2]); }, 
    PHP_INT_MAX); 
$maxwidth = array_reduce($arr, 
    function ($res, $val) { return max($res, $val[0], $val[2]); }, 
    (PHP_INT_MAX * -1) - 1); 
$minheight = array_reduce($arr, 
    function ($res, $val) { return min($res, $val[1], $val[3]); }, 
    PHP_INT_MAX); 
$maxheight = array_reduce($arr, 
    function ($res, $val) { return max($res, $val[1], $val[3]); }, 
    (PHP_INT_MAX * -1) - 1); 


/* note: The image does not reflect the "+ 1"'s I added in a subsequent edit */ 
$mapa = imagecreatetruecolor($maxwidth - $minwidth + 1, $maxheight - $minheight + 1); 
$kolor = imagecolorallocate($mapa, 100, 200, 50); 

foreach ($arr as $k) { 
    imageline($mapa, 
     $k[0] - $minwidth, 
     $k[1] - $minheight, 
     $k[2] - $minwidth, 
     $k[3] - $minheight, $kolor); 
} 
header("Content-type: image/png"); 
imagepng($mapa); 

Résultat:

result of script

+0

juste une excellente solution;) Gros merci! – netmajor