Могу ли я использовать URL-адрес в качестве источника для imagecreatefromjpeg () без включения оберток fopen?

Я знаю, что можно использовать imagecreatefromjpeg (), imagecreatefrompng () и т. Д. С URL-адресом как «имя файла» с помощью функции 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); 

Вы можете загрузить файл с помощью 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); 

Вы даже можете реализовать оболочку потока на основе cURL для «http», используя stream_wrapper_register .

Вы всегда можете загрузить изображение (например, cURL) во временный файл, а затем загрузить изображение из этого файла.