Выведите внешнее изображение с помощью cURL, но как изменить ширину изображения? - PullRequest
1 голос
/ 21 февраля 2011
header('Content-type: image/jpeg');

$url = $_GET['url']; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 

$file = curl_exec($ch); 

curl_close($ch);

echo $file;

Может кто-нибудь сказать, пожалуйста, как я могу изменить ширину $file на 300px?

1 Ответ

1 голос
/ 21 февраля 2011

Если изображение направляется в браузер внутри тега <img>, вы можете заставить браузер изменить его масштаб, изменив атрибут width.

В противном случае вам нужно получить файл и изменить его масштаб.это в вашем PHP-коде перед выводом.

Вы можете использовать imagecopyresampled () , чтобы сделать это, вычисляя высоту.Затем выводится результат.

Пример, следующий из получения изображения в $file из кода выше.

$img = @imagecreatefromstring($file);

if ($img === false) {
    echo $file;
    exit;
}

$width = imagesx($img);
$height = imagesy($img);

$newWidth = 300;

$ratio = $newWidth / $width;
$newHeight = $ratio * $height;


$resized = @imagecreatetruecolor($newWidth, $newHeight);

if ($resized === false) {
    echo $file;
    exit;
}

$quality = 90;

if (@imagecopyresampled($resized, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height)) {
    @imagejpeg($resized, NULL, $quality);
} else {
    echo $file;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...