I've been tearing my hair out trying to figure out how to get gimp to do a scale in the way I want. I think what I'm after is either a non-linear scale, or a trapezoid distort. I'm not sure I'm using the right terms (which makes it hard to google potential solutions), so to demonstrate I've knocked up a couple of images. If this is my source image:
Then this is what I want (I produced this manually to demonstrate):
I've tried the resize tools, but that only allows for square resizing, rather than a distorted scale like I want. The shear tool doesn't do scaling. Cage transform bends the image so that doesn't work either. Perspective distort is close, but affects the x position of the vertical lines which I don't want:
I've also tried some of the filters but again couldn't get any of them to produce the effect I'm after (the curve bend filter seems like it might work, but I can't get it to produce the correct result).
I'm a fair programmer so if it needs a custom filter writing I can probably manage it if somebody could provide some tips as to what I need to do (some kind of matrix transform perhaps?)