back to top

How to Stitch a Photoshop Panorama

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.

Creating a Photoshop panorama is easy once you know the steps.

A panorama is a picture made up of smaller images. The image below is a 10-image panorama of the Chicago skyline.

10-image panorama of the Chicago skyline.
10-image panorama of the Chicago skyline. My settings were 15 seconds at f16. ISO250.

We usually think of panoramas as long, thin landscapes. But panoramas can be vertical as well as horizontal and they can be any size.

I sometimes stitch pictures together in Photoshop to make creative distortions. You can also create panoramas to get a wider angle than your lens will allow or to create a larger file size.

A vertical, 4-image panorama of storm clouds in the American Midwest
A vertical, 4-image panorama of storm clouds in the American Midwest. I took each image in landscape mode. Then I stitched pictures together to create a vertical panorama. My settings were 1/30th of a second at f16, ISO160.

In this article, I’ll show you how to create a panorama in Photoshop. I’ll focus on creating a landscape panorama since that is the most popular type.

The process of stitching many smaller images into one larger image is easy. Let’s start with the most challenging part, creating the component images.

Step 1 – Shoot for Panorama

Creating a successful panorama depends a lot on how you’ve shot the individual images. You’ll need to plan the panorama in advance.

Shoot the images in portrait orientation. This seems counter-intuitive since your final product will be in landscape orientation. But portrait orientation captures more vertical information.

 landscape-oriented panorama from four images created in portrait orientation.
I created this landscape-oriented panorama from four images created in portrait orientation. My settings were 1/2 second at f11, ISO250.

Keep the camera level. It’s a good idea to use a tripod and make sure it’s level. Any curve between images, even a few degrees, will show in the panorama.

Overlap frames by a 1/3 to 1/2 – about 40%. I try to find natural landmarks that guide my overlaps. I’d rather have too many images than too few, but Photoshop will need some separation between the images.

Standardize camera settings. Before you start taking a panorama, take one image in the centre of the panorama. This is your settings guide. Use the focal length, focus, exposure, and white balance of this image as the standard.

Once you decide on camera settings, switch everything into manual mode. Lock in these settings before you take the panorama images.

landscape panorama in the Smokey Mountains from three images
I created this panorama in the Smokey Mountains from three images. I wanted a wider angle than my lens could deliver. My settings were 0.8 seconds at f11, ISO400.

Now that you have images let’s move on to how to stitch the pictures together in Photoshop.

Step 2 – Open Images in Photoshop

Once you’ve decided which images you want to stitch together, open them in Photoshop. I’d suggest closing any other open files. Making panoramas takes a lot of processing power.

If your files are in Lightroom, there is a special export to panorama option. Select photos and choose the PHOTO drop-down menu. Select EDIT IN and click MERGE TO PANORAMA IN PHOTOSHOP. This will take you to the panorama options screen in Photoshop.

Screenshot showing the procedure for merging panoramas in Photoshop from Lightroom.
Screenshot showing the procedure for merging panoramas in Photoshop from Lightroom.

If your files are already in Photoshop, select the FILE drop-down menu then AUTOMATE. Click PHOTOMERGE.

This will open the Photomerge window.

Screenshot showing the procedure for opening the Photomerge window in Photoshop.
Screenshot showing the procedure for opening the Photomerge window in Photoshop.

Step 3 – Select Panorama Options

You have some options in the Photomerge window.

If the only files you have open in Photoshop are those you want to merge, then select ADD OPEN FILES. If you have opened the files from Lightroom, the individual files should already be listed.

Screenshot of the Photomerge window in Photoshop showing panorama options.
Screenshot of the Photomerge window in Photoshop showing panorama options.

You have some layout options in the left column and some checkboxes at the bottom.

Always start with the Auto layout option on the left. Photoshop is usually good at figuring out how to stitch the images together. If you don’t like the result, try the other layout options.

  • Perspective uses the centre image as the reference and fits all the other images around this one.
  • Cylindrical tries to reduce the common “bow tie” shape of wide panoramas.
  • Spherical creates 360-degree panoramas. It can reduce distortion on other types of panoramas.
  • Collage aligns the images and may rotate or scale the images to fit together.
  • Reposition aligns images but does not distort or reshape them to create the panorama.

Layout options may be similar, especially if your camera was level when you took the component images.

6-image panorama of a stream in the Missouri Ozarks.
There are only slight differences between Auto (top) and Cylindrical (bottom) mode. 6-image panorama of a stream in the Missouri Ozarks. My settings were 1/00th of a second at f13, ISO400.

The checkboxes at the bottom of the Photomerge window allow you to adjust the panorama.

By default, the checkbox next to “Blend Images Together” is checked. I leave it checked. Photoshop generally makes good decisions about how to blend the images.

I don’t check the “Vignette Removal” box but do so if you are using a lens that you know creates a vignette around each image.

I also don’t check the “Geometric Distortion Correction” box. I apply a distortion correction in Lightroom as part of my import preset. If you haven’t applied distortion correction, consider checking this box.

I sometimes check the “Content Aware Fill Transparent Areas” box. Photoshop will fill in blank areas around the panorama. Photoshop is generally good about selecting content to use as fill. But leave this box unchecked if you do not want Photoshop to add content or if Photoshop isn’t guessing well.

6-image panorama of a rocky lake under trees
The result of checking the Content Aware Fill Transparent Areas box for this 6-image panorama. Content aware fill isn’t perfect. The sky and trees need a bit of work. My settings were 1/00th of a second at f13, ISO400.

When you’re ready, click OK.

Step 4 – Wait for Photoshop to Create Panorama

Photoshop will look at the individual images and find overlaps. Then the program will create a new file. The parts taken from each image will show up as individual layers in this new file.

Screenshot of creating a panorama in Photoshop
Photoshop creates a new panorama image. You can see the layers and layer masks created from individual images in the bottom right. My settings were 15 seconds at f16. ISO250.

It takes some time for Photoshop to create a panorama. The amount of time depends on:

  1. How many photos you are stitching together
  2. How many checkboxes you selected in the Photomerge window
  3. The processing power of your computer.

Take a break. Get some coffee. Do some keywording.

Step 5 – Save and Edit Your Panoramic Pictures

Once Photoshop creates a new panorama image, you can start post-processing. First, merge the layers together. This gives you a clean image to work with.

If you didn’t ask Photoshop to content aware fill, you would have some white space around the image. Fill in the space with the clone or patch tool, or crop in to remove white space.

Now, you’re ready to start post-processing the image. You can do this in Photoshop or import the image back into Lightroom.

I save the panorama file as a tiff and import it into my Lightroom catalog. If my file is too large to save, I have the option to discard layers and save a copy when I save as a tiff file. This is one way to reduce the size of the file.

Fisheye panorama of a stone stairwell
Fisheye effect created in Photoshop using a 4-image panorama and various distortion tools. My settings were 1/30th of a second at f8.0, ISO800.

Conclusion

Creating a panoramic picture in Photoshop is easy.

The most difficult part is creating images that will seamlessly stitch together for a successful panorama. Remember to keep your camera level and settings the same between images. Overlap images by about 40%.

Open your images in Photoshop and select File – Automate – Photomerge.

Photoshop will give you some options. I usually start with the Auto layout option and ask Photoshop to blend the images.

Once Photoshop creates the panoramic picture, I merge the layers. Then I start post-processing my new panoramic creation.

Save this article to your Pinterest profile to access it later!
Show Comments (0)
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]