It's explained in the image below. I need to stretch like 2nd option.

The normal stretch can be done using Distort option. Is it possible to do it in Photoshop?

enter image description here

  • Depends a bit. You can do this, but the resolution will suck.
    – joojaa
    Jun 6 '19 at 19:23
  • I am unaware of any app that will randomly introduce relative sizing upon distortion of three identical sized shapes. Applications aren't smart enough to know which shape you wish to make larger than the others.
    – Scott
    Jun 6 '19 at 20:05
  • @Scott the image I showed is just an example. I didn't mean blue to be less stretched, yellow little more and pink the most. A normal photograph doesn't have such specific sections/shapes like you said. What my intention is: When I grab top edge of the photo and pull it upwards, the area nearest to edge should be stretched the most and the bottom should be less. I guess it would be possible as we're not limited to specific areas here.
    – Vikas
    Jun 7 '19 at 3:28
  • @Scott I got the answer ;)
    – Vikas
    Jun 11 '19 at 3:31

Maybe Spherize filter could work for you.

Expand the canvas to double height using Canvas Size:

Now use Filter > Distort > Spherize with Mode set to Vertical Only. Experiment with the Amount:

Use Canvas Size again to halve the canvas back to its original size:

The result looks like this:

  • Would it work for a Photo too?
    – Vikas
    Jun 10 '19 at 2:15
  • 1
    Why wouldn't it? Give it a try.
    – Wolff
    Jun 10 '19 at 8:16
  • I'll try and let you know.
    – Vikas
    Jun 10 '19 at 8:51
  • I just tried and it lead me to a right path (which I was talking about). But I think there should be one more step, to actually achieve what I needed this effect. I basically wanted it longer than the original with distortion. Here, we see distortion but height is still same. So we should finally resize the image (using simple transform) in vertical direction? Right?
    – Vikas
    Jun 10 '19 at 10:22
  • 1
    Yes, or maybe scale the image to the wanted height to begin with.
    – Wolff
    Jun 10 '19 at 13:11

There's a "content-aware scale" function for this, pretty straight forward. Select all three color blocks with rectangle marquee tool, edit --> content-aware scale, drag the top middle control point upwards, hit ENTER. That's it. Noted: 1, before dragging, adjust "amount" value in the upper toolbar, the lower the value, the 3 color blocks get more evenly stretched. Unfortunately this function does not work with smart object, so you gotta try a few times; 2, if you want to fully protect the lower blue part, do not include it in marquee selection; 3, not working well in PS CS5, working well at least in CC2014.

  • As Scott said, it just doesn't know how to stretch it uniformly. Different parts of a photograph gets stretched differently, making it uglier.
    – Vikas
    Jun 10 '19 at 3:17

You can make a gradient and use it as a displacement map, only vertical displacement! In displacement map 50% grey means no displacement, black means =maximum to negative direction, white means =maximum to plus direction. Unfortunately I'm not that good in math that I can present the exact gradient.

There's also the spherize filter, which can be used as vertical only, but you will not get exactly wanted proportionality distortion.

You can make manually a warp which stretches your original shape vertically to the wanted distortion. It happens to have three divisions, which is perfect. Warp a smart object and use the generated smart filter to any images (which are not too big).

Not in Photoshop, but in other software (Krita, Affinity Photo) one can define distortion with equations. You define formulas where the content of pixel (X,Y) is taken from. The formulas can contain X, Y, some standard functions and a few parameters (=constants than you define separately)

You have given only three discrete samples of the effect of the wanted distortion function. Quickly watched the following formula seems to do the wanted y-direction distortion (like numerous other formulas, too):

Y=Yo((V/Vo)^0,73) where V=the vertical pixel coordinate to where you want to find a content, Y=the place where you should fetch the content from, Yo and Vo are freely selectable coordinates. The content to Vo will be copied from Yo.

It's tried here (y grows downwards):

enter image description here

In the left there's a transformed version. In the right there's a copy of the original.

The blurriness at borders is unfortunate consequence of anti-aliasing in a low-res image. It cannot be switched off easily.

  • Just posted an answer using Spherize filter - didn't notice you've already mentioned it here. Didn't mean to steal :-)
    – Wolff
    Jun 6 '19 at 21:39
  • @Wolff No problem, you inserted an image and proved it's not exact.
    – user287001
    Jun 6 '19 at 21:44
  • Exactly like the OP's example? No, but exactly something else :-). I didn't realize that we were looking for an exact formula. Just saw it as a visual effect.
    – Wolff
    Jun 6 '19 at 22:01
  • @Wolff visual effect is an interpretation of sparse information that the questioner gave. My math formula isn't better.
    – user287001
    Jun 6 '19 at 22:06
  • The reason i said that the resolution will suck is that there are limits to the distortion filters ability to do this accurately.
    – joojaa
    Jun 7 '19 at 5:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.