I have a specific sized canvas (let's say 400x300 pixels) and I have an image which could be any amount, I want to scale down (paying attention to ratios so it is proper ratio) and fit it inside the canvas, that part I know how to do. But I want to then make the canvas 400x300.
So an image let's say 300x600. It would be scaled to 150x300 (so it fits inside 400x300) and then centered and the image is "applied" to a white canvas of 400x300. And it would do that for any size image.
I don't know how to do the last part.
UPDATE: Just noticed the comment on your post that you want to do this with PHP bindings. This answer I supplied only applies to the command line, not PHP. I can't help you with that. But leaving this answer in case it helps.
To center a smaller image on a large canvas, use the extent operator with gravity. So, for example, if img.gif
is your resized 150x300 image, then this will center the image on a 400x300 white canvas:
-gravity center -extent 400x300 img.gif
[Note you can also set "-background " if you want a canvas other than white, but it defaults to white.]