How to merge two images by using Laravel and intervention image? In this tutorial we will explain how to take two images, put them side by side and save as new image.

Here are the needed steps:


  • Step 1: Install and register intervention Image
  • Step 2: Prepare source images
  • Step 3: Create new blank image
  • Step 4: Add source images to new image
  • Step 5: Save combined image


Install and register intervention image


Installation of intervention image is very simple, just run in your terminal:

                    composer require intervention/image

and after installation is finished open config/app.php and add this line in $providers array:


and add this line in $aliases array:

                    'Image' => Intervention\Image\Facades\Image::class


Assign Intervention image to custom private variable


To achieve this we will include Intervention image in our class, create priv var and assign Intervention image to it and then your code editor will suggest all possible methods (and nested methods) names:

use Intervention\Image\ImageManager;

private $imageManager;

class YourClass {
 public function __construct(
   ImageManager $imageManager
   $this->imageManager = $imageManager;


And now if you type $this->imageManager-> in your code editor (i.e. PHP Storm) it will automatically suggest you method names:



Prepare source images


So let's define two images which we are going to merge:

                    $img_left_local = public_path()."/user_photos/profile/image_left.jpg");
$img_right_local = public_path()."/user_photos/profile/image_right.jpg");



Create new blank image


We will create new blank canvas image by using Laravel and inervention image. We will call our previously defined imageManager var and crate canvas 800x400px

                    $img_canvas = $this->imageManager->canvas(800,400);



Add Source images to new image


Now we will use our source images and add them to our new canvas:

                    $img_canvas->insert(Image::make($img_right_local), 'top-left', 400, 0); 
$img_canvas->save(public_path()."/user_photos/vs/".$id_left."_vs_".$id_right.".jpg", 100);

$img_canvas->insert($this->imageManager->make($img_left_local), 'top-left');
$img_canvas->insert($this->imageManager->make($img_right_local), 'top-left', 400, 0); // move second image 400 px from left

and now we can save our new combined image:


Save combined image


Now when we added our two images to canvas we can save this new image:

                     $img_canvas->save(public_path()."/user_photos/vs/".$id_left."_vs_".$id_right.".jpg", 100);