PHP code example of badrshs / laravel-dynamic-image-composer
1. Go to this page and download the library: Download badrshs/laravel-dynamic-image-composer library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
badrshs / laravel-dynamic-image-composer example snippets
// From Filament: Click "Designer" button on any template
// Or directly via route:
route('image-template.designer', ['template' => $templateId])
use Badrshs\DynamicImageComposer\DynamicImageComposer;
$composer = new DynamicImageComposer();
// Generate image with text overlays
$image = $composer->generate(
templatePath: 'templates/my-template.png',
fields: [
'name' => [
'value' => 'John Doe',
'x' => 'center',
'y' => 500,
'fontSize' => 60,
'color' => 'black',
'font' => 'default',
'alignment' => 'center'
],
'date' => [
'value' => date('Y-m-d'),
'x' => 100,
'y' => 1000,
'fontSize' => 30,
'color' => 'gray',
'font' => 'default'
]
]
);
// Save to storage
$result = $composer->save($image, 'output-' . time() . '.png');
// Returns: ['path' => '...', 'url' => '...', 'filename' => '...', 'disk' => '...']
// Or output directly as HTTP response
return $composer->output($image, 'my-image.png');
$image = $composer->generate('templates/base.png', [
'title' => [
'value' => 'Certificate of Achievement',
'x' => 'center',
'y' => 300,
'fontSize' => 80,
'color' => 'gold'
]
]);
// Add logo overlay
$composer->addOverlay($image, 'logos/company-logo.png', [
'x' => 100,
'y' => 100,
'width' => 200,
'height' => 200,
'opacity' => 0.8
]);
return $composer->output($image);
use Badrshs\DynamicImageComposer\Models\ImageTemplate;
// Create a template
$template = ImageTemplate::create([
'name' => 'My Certificate Template',
'background_image' => 'templates/certificate-bg.png',
'width' => 2480,
'height' => 3508,
'is_active' => true,
'field_configuration' => [
'fields' => [
'name' => [
'x' => 'center',
'y' => 1200,
'fontSize' => 100,
'color' => 'black',
'font' => 'monotype',
'alignment' => 'center'
]
]
]
]);
// Generate from template
$composer = new DynamicImageComposer();
$image = $composer->generate(
$template->background_image,
array_merge(
['name' => ['value' => 'Jane Smith']],
$template->field_configuration['fields'] ?? []
)
);
return [
// Storage disk for templates and generated images
'disk' => env('DYNAMIC_IMAGE_DISK', 'public'),
// Directories
'templates_directory' => 'image-templates',
'elements_directory' => 'image-elements',
'generated_directory' => 'generated-images',
'fonts_directory' => 'fonts',
// Font definitions (add your custom fonts)
'fonts' => [
'default' => [
'en' => 'Museo500-Regular.ttf',
'ar' => 'sky.ttf',
],
// Add more fonts...
],
// Color definitions (RGB values)
'colors' => [
'black' => [40, 40, 40],
'white' => [255, 255, 255],
'gold' => [212, 175, 55],
// Add more colors...
],
];
use Badrshs\DynamicImageComposer\Filament\Resources\ImageTemplateResource;
public function panel(Panel $panel): Panel
{
return $panel
->resources([
ImageTemplateResource::class,
]);
}
[
[
'url' => 'https://...',
'name' => 'John Doe',
'filename' => 'certificate.png',
'metadata' => 'Generated on 2024-01-01' // optional
],
// ...
]
'fonts' => [
'my-font' => [
'en' => 'MyFont-Regular.ttf',
'ar' => 'MyFont-Arabic.ttf',
],
],
'colors' => [
'brand-blue' => [30, 144, 255],
'brand-red' => [220, 53, 69],
],
$image = $composer->generate('template.png', [
'name' => [
'value' => 'محمد أحمد', // Arabic text
'x' => 'center',
'y' => 500,
'fontSize' => 60,
'font' => 'default', // Will use Arabic font variant
]
]);
bash
php artisan dynamic-image-composer:install --with-fonts
bash
php artisan vendor:publish --tag=dynamic-image-composer-config
php artisan vendor:publish --tag=dynamic-image-composer-migrations
php artisan vendor:publish --tag=dynamic-image-composer-views
php artisan vendor:publish --tag=dynamic-image-composer-fonts
php artisan migrate
php artisan storage:link