I am using PHP & GD library.
I want to draw an image (say this one: http://www.gravatar.com/avatar/107f2fafb2d29fedc3783b141139a878?s=128&d=identicon&r=P
imagecopyresampled()
or imagecopyresized()
should do exactly what you want.
(Despite its name, imagecopyresampled does resize as well.)
They take some or all of the source image, resize it, and copy it into the destination image.
If the source image isn't square, you can either crop or distort it as it is copied.
imagecopy()
or imagecopymerge()
. It's documentation brings exemples too.