Example
function mosaicImages()
{
$imagick = new \Imagick();
$mosaicWidth = 500;
$mosaicHeight = 500;
$imagick->newimage($mosaicWidth, $mosaicHeight, 'red');
$images = [
"../public/images/Biter_500.jpg",
"../public/images/SydneyPeople_400.jpg",
"../public/images/Skyline_400.jpg",
];
$positions = [
[50, 300],
[200, 125],
[25, 50],
];
$count = 0;
foreach ($images as $image) {
$nextImage = new \Imagick(realpath($image));
$nextImage->resizeimage(300, 300, \Imagick::FILTER_LANCZOS, 1.0, true);
$nextImage->setImagePage(
$nextImage->getImageWidth(),
$nextImage->getImageHeight(),
$positions[$count][0],
$positions[$count][1]
);
$imagick->addImage($nextImage);
$count++;
}
$result = $imagick->mosaicImages();
$result->setImageFormat('png');
$result->cropImage(
$mosaicWidth,
$mosaicHeight,
0, 0
);
header("Content-Type: image/png");
echo $result->getImageBlob();
}