Я знаю, что можно использовать 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) во временный файл, а затем загрузить изображение из этого файла.