35

In Photoshop, I've put together some panorama photos using the Photomerge tool, and the resulting image contains a lot of transparent pixels. Also, because it's assembled from multiple photos, the alignment can be off. What I'd like to do is cut the image down to the largest box which contains no transparent pixels at all. It's similar to the Trim tool, but this would remove a number of non-transparent pixels. Is there anything like this?

Basically something that would automatically crop the above image to the selection box there: a rectangle with no transparent pixels.

3
  • Usually you can do a select-all on the layer and it will omit empty (transparent) pixels.
    – jweede
    Aug 12, 2009 at 11:54
  • 1
    yes, but i want to trim it to a rectangle which doesn't contain transparent pixels. i'll edit to clarify that.
    – nickf
    Aug 12, 2009 at 11:58
  • You would imagine it's a simple feature but photoshop simply cannot do that without a script, and such script is easy to write - because you are basically looking for a biggest possible rectangle in the image based on current rotation. I will probably write one myself and share. Feb 17, 2015 at 7:40

9 Answers 9

40

Image > Trim then select Based On: Transparent Pixels

2
  • 11
    That only works if the area to trim is rectangular. It won't work for arbitrary shapes like in the OP's example.
    – laurent
    May 7, 2014 at 1:27
  • Not what was asked.
    – guidod
    Nov 20, 2021 at 12:16
3

Using CS6, the following does exactly what is required for me:

  1. select crop tool
  2. select 'straighten'
  3. draw along a known straight line
  4. the rotation is performed immediately and a suggested crop appears cutting out all the transparent pixels resulting from the rotation.

result: beautiful!

2
  • This only works if the image is rectangular. Feb 16, 2015 at 9:03
  • While this might not be what the OP asked, this was exactly what I was looking for. Thanks!
    – Etheryte
    Oct 25, 2019 at 15:58
2

There are several different approaches I would take to this, but I can't think of a way to do it automatically.

First create a fill layer below with a bright colour. This shows you any semi-transparent pixels left from merging images.

Secondly, duplicate the top layer with your image. keep duplicating your original picture layer until any colour from the fill layer below has vanished. This has the effect of making any semi-transparent pixels completely opaque, and doesn't affect the rest of the image as it already is.

Last, merge all these layers and crop to the desired size. You could crop at the beginning if you wanted to, it makes no difference.

If a given pixel area has no fill, rather than crop it, why not clone over it with the clone tool?

2

Just in case photoshop does offer you no solution for this:

I use Microsoft ICE or Autopano Pro for photo stitching, and they both have very simple to use crop features to achieve just this.

Maybe you should try to use a different tool for stitching - ICE is free of charge, might be worth a try.

1
  • I've found no good choice for stitching other than Photoshop. It's simply awesome... I opened 2 docs containing a scanned in image set a few settings in a dialog and let it work, perfectly stitched them together!
    – RCIX
    Jan 2, 2010 at 9:33
1

Make a new layer and Edit - Fill... it with black.

Now, with both layers visible and the picture layer selected, use Magic Wand, and with "Sample All Layers" and "Contiguous" checked, select the transparent area now turned black.

Hit delete. All contiguous transparent pixels should be deleted.

1
  • I’ve never used Photoshop (and I don’t have it), so I can’t tell what this will do.  What does “deleting” a pixel do?  Will it delete non-transparent pixels?  (You do understand that the OP wants to crop the image, right?)  And P.S. Isn’t there a risk that black pixels that are legitimately part of the image might get thrown out with the bathwater?  P.P.S. You could improve your answer with illustrations; i.e., before and after images. P.P.P.S. Please do not respond in comments; edit your answer to make it clearer and more complete. Nov 13, 2016 at 19:52
0

What I can think of is:

a) Photoshop scripting [1 2]

b) Matlab [3]

Have a look. Meanwhile, I'll look for links that explain better how this can be done or probably write some Matlab code for this and then edit this post.

0

If you can't find an automatic tool and have to end up doing it by hand, this tutorial will show how to do it with the single-row marquee tool which is a lot easier than the regular one when trying to get right at the top.

0

You need to Select All, then tap right and then left on your keyboard to just select the opaque pixels without ultimately moving any of them, then hit Crop. This will bound just the opaque pixels.

0

This can be done with a script like the one below:

  1. Download the script here: https://developer71240.github.io/crop-to-opaque/
  2. Extract the donwloaded zip file
  3. With the image to be trimmed open in Photoshop, choose File > Open
  4. Browse to the extracted script files, select crop-to-opaque.jsx and choose Open

Note: the image will be trimmed according to the current layer which must have an alpha channel.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .