function getScreen($url, $filename) {
    // Загружаем изображение;
    $image = file_get_contents('http://mini.s-shot.ru/1280x1024/320/JPEG/?'.$url);
    // Сохраняем изображение;
    file_put_contents($_SERVER['DOCUMENT_ROOT'].'/files/'.$filename, $image);
}

// Пример вызова функции;
getScreen("http://www.yandex.ru", "yandex.jpg");

P.S. Если использовать imagecreatefromjpeg и imagejpeg, то файл получается очень большого размера, да и качество от повторной компрессии хуже. Так, что это решение похоже оптимальное.