kehet / imagick-layout-engine
A PHP library for creating complex image layouts with automatic positioning and sizing. This library provides a flexbox-like approach to image composition, making it easy to create structured layouts with text, images, and shapes.
Fund package maintenance!
Kehet
Installs: 661
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/kehet/imagick-layout-engine
Requires
- php: ^8.3
- ext-imagick: *
Requires (Dev)
- laravel/pint: ^1.0
- phpunit/phpunit: ^12.2
README
A PHP library for creating complex image layouts with automatic positioning and sizing. This library provides a flexbox-like approach to image composition, making it easy to create structured layouts with text, images, and shapes.
Requirements
- PHP 8.3 or later
- Linux (Windows not tested)
- Imagick PHP extension
Installation
You can install the package via composer:
composer require kehet/imagick-layout-engine
Basic Usage
// Create a new image $width = 1500; $height = 1000; $imagick = new Imagick(); $imagick->newImage($width, $height, new ImagickPixel('white')); // Create a row container with rectangles $frame = new RowContainer(); $frame->addItem(new Rectangle(draw(fill: '#fee2e2'))); $frame->addItem(new Rectangle(draw(fill: '#fca5a5'))); $frame->addItem(new Rectangle(draw(fill: '#dc2626'))); $frame->addItem(new Rectangle(draw(fill: '#450a0a'))); // Draw container onto image $frame->draw($imagick, 0, 0, $width, $height); // Output image as PNG $imagick->setImageFormat('png'); $imagick->writeImage('output.png');
For more examples, see documentation.
Testing
composer test
SAVE_SNAPSHOT
When set, if snapshot file is missing, snapshot image will be automatically written to tests/__snapshots__/.
SAVE_SNAPSHOT=1 composer test -- --filter=YourTest
SAVE_IMAGE_DIFF
When set, a visual diff image will be saved to tests/temp/ whenever an image comparison is performed, regardless of pass/fail.
SAVE_IMAGE_DIFF=1 composer test -- --filter=YourTest
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
GNU GENERAL PUBLIC LICENSE version 3 or later. Please see License File for more information.