Я хочу смочь получить удаленное изображение от веб-сервера, передискретизировать его, и затем служить ему до браузера И сохранить его в файл. Вот то, что я имею до сих пор:
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "$rURL");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
$out = curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
$imgRes = imagecreatefromstring($out);
imagejpeg($imgRes, $filename, 70);
header("Content-Type: image/jpg");
imagejpeg($imgRes, NULL, 70);
exit();
Обновление
Обновленный для отражения корректного ответа на основе обсуждения ниже
Вы можете извлечь файл в ресурс GD, используя imagecreatefromstring ()
:
imagecreatefromstring () возвращает идентификатор изображения, представляющий изображение, полученное из заданных данных. Эти типы будут автоматически обнаружены, если ваша сборка PHP их поддерживает: JPEG, PNG, GIF, WBMP и GD2.
оттуда довольно просто использовать imagecopyresampled () .
Выведите его, используя imagejpeg () или любой другой формат вывода, который вам больше подходит.
Сделайте один вывод с именем файла:
imagejpeg($image_resource, "/path/to/image.jpg");
затем отправьте тот же ресурс в браузер:
header("Content-type: image/jpeg");
imagejpeg($image_resource);
в зависимости от формата изображения вы можете вместо этого использовать функции imagepng () или imagegif ().
Возможно, вы захотите работать с разными форматами вывода в зависимости от типа входного файла. Вы можете получить тип входного файла с помощью getimagesize () .
Помните, что вы можете настроить качество результирующего изображения JPEG с помощью параметра $ quality
. По умолчанию 75%, что может выглядеть довольно паршиво.