$old = imageCreateFromJpeg($file);
// Размеры старой картинки
$old_w = imageSX($old);
$old_h = imageSY($old);
// Новый размер должен быть в пределах 300х300
// Y X нужно просчитать
if ($old_w <= 300 || $old_h <= 300) {
$new = imageCreateTrueColor($image_x, $image_y);
imageCopyResampled($new, $old, 0, 0, 0, 0, $image_x, Y, X, $old_h);
header('Content-type: image/jpeg');
imagejpeg($new, 'newfile.jpg', 75);
imagedestroy($new);
}
Я немного порылся, узнал про GD.