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, то файл получается очень большого размера, да и качество от повторной компрессии хуже. Так, что это решение похоже оптимальное.