require 'vendor/autoload.php';
use Kehet\ImagickLayoutEngine\Containers\ColumnContainer;
use Kehet\ImagickLayoutEngine\Containers\RowContainer;
use Kehet\ImagickLayoutEngine\Enums\Gravity;
use Kehet\ImagickLayoutEngine\Enums\ImageMode;
use Kehet\ImagickLayoutEngine\Items\Image;
use Kehet\ImagickLayoutEngine\Items\Text;
function createGravityDemoContainer(string $imagePath, Gravity $gravity, ImageMode $mode): ColumnContainer
$container = new ColumnContainer;
$container->setMargin(10);
$container->addItem(new Image($imagePath, $mode, $gravity));
$container->addItem(new Text(
$smallImage = 'example-image-small.jpeg';
$largeImage = 'example-image-large.jpeg';
// Create new image with white background
$imagick->newImage($width, $height, new ImagickPixel('white'));
$root = new ColumnContainer;
$row1 = new RowContainer;
$row1->addItem(createGravityDemoContainer($largeImage, Gravity::TOP, ImageMode::NONE));
$row1->addItem(createGravityDemoContainer($largeImage, Gravity::CENTER, ImageMode::NONE));
$row1->addItem(createGravityDemoContainer($largeImage, Gravity::BOTTOM, ImageMode::NONE));
$row2 = new RowContainer;
$row2->addItem(createGravityDemoContainer($smallImage, Gravity::LEFT, ImageMode::FIT));
$row2->addItem(createGravityDemoContainer($smallImage, Gravity::CENTER, ImageMode::FIT));
$row2->addItem(createGravityDemoContainer($smallImage, Gravity::RIGHT, ImageMode::FIT));
$row3 = new RowContainer;
$row3->addItem(createGravityDemoContainer($largeImage, Gravity::TOP, ImageMode::FILL));
$row3->addItem(createGravityDemoContainer($largeImage, Gravity::CENTER, ImageMode::FILL));
$row3->addItem(createGravityDemoContainer($largeImage, Gravity::BOTTOM, ImageMode::FILL));
// Draw container onto image
$root->draw($imagick, 0, 0, $width, $height);
// Output image as png to file
$imagick->setImageFormat('png');
$imagick->writeImage(__DIR__ . '/06-image-gravity.png');