Non mi è mai capitato di farlo, però fra un pò mi servirà.
Ci si dovrebbe riuscire con imagecopyresized, sul manuale c'è anche un esempio

Codice PHP:
<?php
// File and new size
$filename 'test.jpg';
$percent 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width$height) = getimagesize($filename);
$newwidth $width $percent;
$newheight $height $percent;

// Load
$thumb imagecreatetruecolor($newwidth$newheight);
$source imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

// Output
imagejpeg($thumb);
?>