After trying GD a year or two ago, I settled instead on using ImageMagick. Too many options to name, nice open license, and decent performance.
Must be run in a shell, however - while some work has been done building a wrapper for ImageMagick so that IM functions are accessable from PHP, it isn't usable yet. Even with that, I haven't missed it.
I typically call IM functions (EG: convert) with the output going to stdout so that I can capture the data in PHP, and save to cache files and the like.
For example:
$cmd="/usr/bin/convert -scale $width"."x"."$height $file jpg:-";
$img_data=$cmd;
// Then I can write to a file
$fp=fopen($img_cachefile, 'w');
fwrite($fp, $img_data);
fclose($fp);
// and then kick it out with the right headers to
// the browser.
Header('Content-Type: image/jpeg');
Header('Connection: close');
Header('Accept-Ranges: bytes');
Header('Content-Length: '.strlen($img_data));
echo $img_data;
die();
Works quite well for me.