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(); }