Acabo de hacer este para un amigo...no lo he probado, pero poniendo en el source de la imagen el nombre del archivo y pasandole ancho, alto, calidad e imagen deberia regenerarla con el tamaño pasado.
Ejemplo, si guaras el file como imagen.php, y tenes una imagen llamada pipo.jpg, entonces harias así: 
<img src="imagen.php?imagen=pipo.jpg&ancho=100"> 
 Código PHP:
    <?
$maximoPx = 1000;
$imagen = isset($_GET["imagen"]) ? $_GET["imagen"] : '';
$ancho = isset($_GET["ancho"]) ? (intval($_GET["ancho"])<$maximoPx) ? intval($_GET["ancho"]) : 0 : 0;
$alto = isset($_GET["alto"]) ? (intval($_GET["alto"])<$maximoPx) ? intval($_GET["alto"]) : 0 : 0;
$calidad = isset($_GET["calidad"]) ? (intval($_GET["calidad"])<100) ?  intval($_GET["calidad"]) : 60 : 60;
 
 
if(strlen($imagen)>5){
    $extension = strtolower(substr(strrchr($imagen,"."),1));
    $extensionJpg = array('jpg','jpeg');
    $extensionGif = array('gif','png');
    
    if(in_array($extension,$extensionJpg)):
        $imgSource = imagecreatefromjpeg($imagen);
    elseif(in_array($extension,$extensionGif)):
        $imgSource = imagecreatefromgif($imagen);
    else:
        header("Location: $imagen");
        exit;
    endif;
 
    $anchoOriginal = imagesx($imgSource);
    $altoOriginal = imagesy($imgSource);
 
    if($alto===0):
        $alto = ($ancho / $anchoOriginal) * $altoOriginal;
        if($alto===0):
            $alto = 1;
        endif;
    endif;
 
    if($ancho===0):
        $ancho = ($alto / $altoOriginal) * $anchoOriginal;
        if($ancho===0):
            $ancho = 1;
        endif;
    endif;
 
 
    #Para GD 2.0.1 o mayor
    $imgDestino = imagecreatetruecolor($ancho,$alto); 
    imagecopyresampled($imgDestino, $imgSource, 0, 0, 0, 0, $ancho, $alto, $anchoOriginal, $altoOriginal); 
 
    #Para versiones anteriores a GD 2.0.1
    #$imgDestino = imagecreate($ancho,$alto); 
    #imagecopyresized($imgDestino, $imgSource, 0, 0, 0, 0, $ancho, $alto, $anchoOriginal, $altoOriginal);
 
    header("Content-type: image/jpeg"); 
    imagejpeg($imgDestino,'', $calidad);
    imagedestroy($imgSource);
    imagedestroy($imgDestino);
}
 
?>    
  PD: Los parametros son opcionales, revisa el codigo;)