замостить картинку водяным знаком

jz828059

Новичок
Приветствую.
Прошу подсказки по проблеме.
Есть код наложения водяного знака на изображение. Используется плагин PHP Image Workshop.
Вопрос: как замостить изображение водяным знаком по принципу плитки?

Вообще хотелось бы, чтобы была возможность менять "точку старта мощения", а так же возможность устанавливать горизонтальные/вертикальные интервалы (величина швов плитки).

Какими вообще инструментами легче всего решить такую проблему?

PHP:
<?php

    // Include Library
    require_once './vendor/autoload.php';
    use PHPImageWorkshop\ImageWorkshop; // Use the namespace of ImageWorkshop

    // Get images
    $image = ImageWorkshop::initFromPath('./files/'.$_POST['basicImage']);
    $watermark = ImageWorkshop::initFromPath('./files/'.$_POST['waterMark']);

    // Settings
    $dirPath = './files/';
    $filename = "temp-image.jpg";
    $createFolders = false;
    $backgroundColor = '$ffffff'; // transparent, only for PNG (otherwise it will be white if set null)
    $imageQuality = 100; // useless for GIF, usefull for PNG and JPEG (0 to 100%)
    $watermarkOpacity = $_POST['opacity'];
    $xpos = $_POST['xpos'];
    $ypos = $_POST['ypos'];

    // Add opacity to watermark
    $watermark->opacity($watermarkOpacity);

    // Prepare image
    $image->save($dirPath, $filename, $createFolders, $backgroundColor, $imageQuality); // Convert basic layer to jpg

    // Resize
    $img = imagecreatefromjpeg('./files/temp-image.jpg');
    $resizeWidth = ImageSX($img);
    $resizeHeight = ImageSY($img);
    $image = ImageWorkshop::initFromPath('./files/'.$filename); // Get new layer

    // Find out which dimensions is bigger and resize
    if ($resizeWidth > $resizeHeight)
    {
        $image->resizeInPixel(650, null, true);
    }
    else
    {
        $image->resizeInPixel(null, 534, true);
    }

    // Adding watermark
    $image->addLayerOnTop($watermark, $xpos, $ypos, 'LT'); // Add watermark to basic layer

    // Result image
    $filename = "result.jpg";
    $image->save($dirPath, $filename, $createFolders, $backgroundColor, $imageQuality);

    // Send to ajax
    echo __DIR__."/files/".$filename;
    exit;
 
Сверху