代码之家  ›  专栏  ›  技术社区  ›  netmajor

使用txt文件中的坐标用php绘制线条

  •  1
  • netmajor  · 技术社区  · 15 年前

    我有一个文件a2.txt,每行坐标x1、y1、x2、y2如下:

    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  
    

    在我的PHP文件中,我有那个代码。这段代码应该取每一条直线,并从直线上画出坐标线。但是出了点问题,因为什么都没有画:/:

    <?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) ;
    ?>
    

    如果我使用imagejpeg和imagedestroy在其中绘制它的第一行。如何绘制每一条线?? 请帮助:

    1 回复  |  直到 15 年前
        1
  •  5
  •   bastos.sergio    15 年前

    非结构化,无清理或错误检查示例:

    <?PHP
    $plik=到期日
    204 13 225 225
    225 59 226 226
    226 84 219 219
    219 111 244 244
    244 192 236 236
    236 209 254 254
    254 223 276 276
    276 258 237 237
    EOD;
    
    $plik=preg_replace('/\r\n?/',“\n”,$plik);
    
    $arr=explode(“\n”,$plik);
    阵列步行($arr,
    函数(&$value,$key){
    $value=explode(“”,$value);
    }
    ;
    
    $minWidth=数组减少($arr,
    函数($res,$val)返回最小值($res,$val[0],$val[2]);,
    PHP-铟最大;
    $maxWidth=数组减少($arr,
    函数($res,$val)返回最大值($res,$val[0],$val[2]);,
    (php_int_max*-1)-1);
    $minheight=数组减少($arr,
    函数($res,$val)返回最小值($res,$val[1],$val[3]);,
    PHP-铟最大;
    $maxheight=数组减少($arr,
    函数($res,$val)返回最大值($res,$val[1],$val[3]);,
    (php_int_max*-1)-1);
    
    
    /*注意:图像不反映我在后续编辑中添加的“+1”*/
    $mapa=imageCreateTrueColor($maxWidth-$minWidth+1,$maxHeight-$minHeight+1);
    $kolor=imagecolorallocate($mapa,100,200,50);
    
    foreach($arr为$k){
    图像线($MAPA,
    $K[0]-$MinWidth,宽度
    $k[1]-$minheight,最低
    $K[2]—$MinWidth,
    $K[3]—$Minheight,$Kolor);
    }
    header(“内容类型:图像/png”);
    图片PNG($MAPA);
    < /代码> 
    
    结果:

    <?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);
    

    结果:

    result of script

    推荐文章