Получите удаленное изображение с помощью cURL, а затем повторите выборку - PullRequest
6 голосов
/ 13 апреля 2010

Я хочу иметь возможность получить удаленное изображение с веб-сервера, повторно сэмплировать его, а затем передать его в браузер и сохранить в файл. Вот что у меня есть:

$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();

Обновление

Обновлено, чтобы отразить правильный ответ на основе обсуждения ниже

1 Ответ

4 голосов
/ 13 апреля 2010

Вы можете извлечь файл в ресурс 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%, что может выглядеть довольно глупо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...