我知道可以使用imagecreatefromjpeg(),imagecreatefrompng()等将URL作为'filename'和fopen(),但由于安全问题,我无法启用包装器。有没有办法将URL传递给imagecreatefromX()而不启用它们?
我也尝试过使用cURL,这也给了我一些问题:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complete URL to image
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
$image = imagecreatefromstring($data);
var_dump($image);
imagepng($image);
imagedestroy($image);
答案 0 :(得分:20)
您可以使用cURL下载文件,然后将结果通过管道传输到imagecreatefromstring
。
示例:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $imageurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks!
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image.
$data = curl_exec($ch);
curl_close($ch);
$image = imagecreatefromstring($data);
答案 1 :(得分:1)
您甚至可以使用stream_wrapper_register为'http'实现基于cURL的流包装。
答案 2 :(得分:0)
您可以随时将图像(例如使用cURL)下载到临时文件,然后从该文件加载图像。