Как мы можем динамически изменять ширину и высоту png-изображения, созданного с использованием библиотеки GD в PHP? - PullRequest
0 голосов
/ 29 ноября 2018

Я создал шахматную доску, используя библиотеку GD, и сохранил ее в виде файла png.Я следовал этому решению (http://php.net/manual/en/function.imagefill.php#59222). Но мне нужно динамически изменять ширину и высоту изображения и ширину поля (квадратный столбец на шахматной доске). Любая помощь будет признательна.

HTML

    <form action="" method="get">
       <div class="form-group">
          <label for="height">Height</label>
          <input type="number" name="height" id="height" class="form-control" placeholder="Height">
       </div>

       <div class="form-group">
          <label for="width">Width</label>
          <input type="number" name="width" id="width" class="form-control" placeholder="Width">
       </div>

       <div class="form-group">
           <label for="fieldWidth">Field Width</label>
           <input type="number" name="fieldWidth" id="fieldWidth" class="form-control" placeholder="Field Width">
       </div>

       <button type="submit" class="btn btn-default" name="generateImage">Generate Image</button>

   </form>

php

if(isset($_REQUEST['generateImage'] )) {
          //header('Content-type: image/png');

    $imageCreate = @imagecreate(400, 400)
                    or die("Cannot Initialize new GD image stream");
    $grey        = imagecolorallocate($imageCreate, 229, 229, 229);
    $black       = imagecolorallocate($imageCreate,0,0,0);
    $white       = imagecolorallocate($imageCreate,255,255,255);
    $fieldWidth  = (!empty($_REQUEST['fieldWidth'])) ? $_REQUEST['fieldWidth'] : 50;

    imagefilltoborder($imageCreate, 0, 0, $grey, $grey);

    imagefill($imageCreate,50,20, $white);

    for ($i = 1; $i < 8; $i++) {
        $cord = $i * $fieldWidth;
        imageline($imageCreate,0, $cord,400, $cord, $black);
        imageline($imageCreate, $cord,0, $cord,400, $black);
    }

    for ($i = 0; $i < 8; $i++)  {
        for ($j = 0; $j < 8; $j++)  {
             $x = ($i * $fieldWidth) + 2;
             $y = ($j * $fieldWidth) + 2;
             if ( (($i % 2) + ($j % 2) ) % 2 == 0 ) {
                imagefill($imageCreate, $x, $y, $black);
             }
        }
    }

    imagepng($imageCreate, 'img/chessboard.png');
    imagedestroy($imageCreate);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...