Con PHP GD.
Te dejo un ejemplo:
Código PHP:
<?php
$file = 'nbRvbO848587-02.jpg'; //imagen, puede ser una subida al servidor claro.
$size = 100; //ancho (o alto) max.
list($width, $height) = getimagesize($file);
if($width>$height)
{
$new_height = $size;
$new_width = ($width/$height)*$new_height;
}
else {
$new_width = $size;
$new_height = ($height/$width)*$new_width;
}
$resource = imagecreatefromjpeg($file);
$temp = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($temp, $resource, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($temp, "nueva_".$file, 100);
?>