我希望能够从网络服务器检索远程图像,对其进行重新取样,然后将其提供给浏览器并将其保存到文件中。以下是我到目前为止的情况:
$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();
更新
根据以下讨论更新以反映正确答案
答案 0 :(得分:4)
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%,看起来很糟糕。