2012-05-02 19 views
0

多分、誰かが私を助けてくれるかもしれません。 私は560x225サイズのzem.png画像を持っています。透明な背景があります。私はx、yからx1、x2までの線をgdライブラリで描画する必要があります(私は5-7行を描く必要がありますが、単純な例で1行を描くのは完璧です)。PHP gdライブラリ、既存のPNG画像に線を描く方法

は、ここに私の透明なイメージを作成する方法は次のとおりです。

// Kuriame paveiksleli pasinaudodami GD library keliams tarp miestu pavaizduoti 
$im = imagecreatetruecolor(560, 225); 
$red = imagecolorallocate($im, 255, 0, 0); 
$black = imagecolorallocate($im, 0, 0, 0); 

// Make the background transparent 
imagecolortransparent($im, $black); 

// Issaugome paveiksleli 
imagepng($im, './zem.png'); 
imagedestroy($im); 

テーブルのかのdivの背景画像として、私はそれを使用しています。このイメージを作成した後。私のテーブルのIR div要素をx上のブロックに分割されて - 私は4ポイントまたは私は他の画像を配置れている選択された4つのブロックを持っているY 25.

に、35ブロック、ここで私は、これらのrondomブロックを生成しています方法は次のとおりです。

$x = rand(1, 35); 
$y = rand(1, 25); 
$x2 = rand(1, 35); 
$y2 = rand(1, 25); 
$x3 = rand(1, 35); 
$y3 = rand(1, 25); 
$x4 = rand(1, 35); 
$y4 = rand(1, 25); 

シングルブロックサイズは16x9です。そして、生成されたすべてのブロックから別のブロック(都市からの道路を表す)に線を引く必要があるので、私はx(x2、x3 ..)を16で、yを9で整理して、開始点と終了点。だから私はこれをやっている:

// Breziame kelius 
$kordinate = $x * 16; 
$kordinate2 = $y * 9; 
$kordinate3 = $x2 * 16; 
$kordinate4 = $y2 * 9; 

Okey今私は1行の座標を持っています。そして、私が立ち往生している場所があります。私はたくさんの例を試みました。しかし、私はまだPHPのgdライブラリを使用して行を描画することはできません。だから誰かが何かを提案するかもしれない?コードをイメージ化するために何かを追加するか、単純に空白の透明イメージを残してそれを開いて線を描くだけです...

+0

あなたの問題は何ですか?線描画関数を使用しますが効果はありませんか?または、他の何か? – Styx

+0

はい、効果はありません。私が使用した関数の例を次に示します:imageline($ im、$ kordinate、$ kordinate2、$ kordinate3、$ kordinate4、$ red);そして、何も起こらない:/ – Tautvydas

+0

描画コード全体を共有できますか? – Styx

答えて

1

テーブルやマップイメージを作成するときは、常にクラスと機能を準備します。私はそれが役立つかどうかはわかりませんが、私のサンプルコードはここにあります。あなたはこのファイルにGridTb.phpという名前を付けて実行することができます。

<?php 
header('Content-type: image/png'); 
$GridTb = new GridTb(); 
$GridTb->pngfile(330, 700); 

class GridTb { 

    function pngfile($width, $height) { 

     define("WIDTH", $width); 
     define("HEIGHT",$height); 


     $png_image = imagecreate(WIDTH, HEIGHT); 

     imagecolorallocate($png_image, 255, 255, 255); 
     imagesetthickness($png_image, 1); 
     $black = imagecolorallocate($png_image, 0, 0, 0); 

     $x = 0; 
     $y = 0; 
     $w = imagesx($png_image) - 1; 
     $z = imagesy($png_image) - 1; 
     //basic square frame 
     imageline($png_image, $x, $y, $x, $y + $z, $black); 
     imageline($png_image, $x, $y, $x + $w, $y, $black); 
     imageline($png_image, $x + $w, $y, $x + $w, $y + $z, $black); 
     imagerectangle($png_image, $x, $y + $z, $x + $w, $y + $z, $black); 

     $wid = 30; 
     // $h=40; 
     for ($row = 0; $row < 10; $row++) { 

      imageline($png_image, $wid, HEIGHT, $wid, 0, $black); 
      $wid+=30; 
      imageline($png_image, $wid, HEIGHT, $wid, 0, $black); 

      for ($h = 40; $h < 701; $h++) { 

       $h2 = array(60,200,150,150,100); 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       $h+=60; 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       $h+=200; 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       $h+=150; 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       $h+=150; 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       $h+=100; 
       imageline($png_image, WIDTH, $h, 0, $h, $black); 
       //sum of $h = 700 
      } 
     } 
     imagepng($png_image); 
     imagedestroy($png_image); 
    } 

} 

?> 
<IMG src="GridTb.php"> 
関連する問題