使用cURL获取远程图像,然后重新采样

时间:2010-04-13 12:25:47

标签: php curl image-manipulation gd

我希望能够从网络服务器检索远程图像,对其进行重新取样,然后将其提供给浏览器并将其保存到文件中。以下是我到目前为止的情况:

$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 个答案:

答案 0 :(得分:4)

您可以使用imagecreatefromstring()

将文件提取到GD资源中
  

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()获取输入文件类型。

请记住,您可以使用$quality参数调整生成的JPEG图像的质量。默认值为75%,看起来很糟糕。