Сохранение изображения с URL-адреса PHP

Мне нужно сохранить изображение с URL-адреса PHP на мой компьютер. Предположим, у меня есть страница, http://example.com/image.php , где есть один «цветок», ничего больше. Как сохранить это изображение из URL с новым именем (используя PHP)?

Solutions Collecting From Web of "Сохранение изображения с URL-адреса PHP"

Если у вас allow_url_fopen установлено значение true :

 $url = 'http://example.com/image.php'; $img = '/my/folder/flower.gif'; file_put_contents($img, file_get_contents($url)); 

Другие используют cURL :

 $ch = curl_init('http://example.com/image.php'); $fp = fopen('/my/folder/flower.gif', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); 
 copy('http://example.com/image.php', 'local/folder/flower.jpg'); 
 $content = file_get_contents('http://example.com/image.php'); file_put_contents('/my/folder/flower.jpg', $content); 

Здесь вы идете, пример сохраняет удаленное изображение в image.jpg.

 function save_image($inPath,$outPath) { //Download images from remote server $in= fopen($inPath, "rb"); $out= fopen($outPath, "wb"); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } save_image('http://img.ruphp.com/image/img.jpg','image.jpg'); 

Ответ Вартека cURL не работал для меня. Это произошло с небольшим улучшением из-за моей конкретной проблемы.

например,

Когда на сервере имеется перенаправление (например, когда вы пытаетесь сохранить изображение профиля facebook), вам понадобится следующий набор параметров:

 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

Полное решение:

 $ch = curl_init('http://example.com/image.php'); $fp = fopen('/my/folder/flower.gif', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); curl_close($ch); fclose($fp); 

Я не смог получить какие-либо другие решения для работы, но я смог использовать wget:

 $tempDir = '/download/file/here'; $finalDir = '/keep/file/here'; $imageUrl = 'http://img.ruphp.com/image/image.jpg'; exec("cd $tempDir && wget --quiet $imageUrl"); if (!file_exists("$tempDir/image.jpg")) { throw new Exception('Failed while trying to download image'); } if (rename("$tempDir/image.jpg", "$finalDir/new-image-name.jpg") === false) { throw new Exception('Failed while trying to move image file from temp dir to final dir'); } 
 $img_file='http://img.ruphp.com/image/f' $img_file=file_get_contents($img_file); $file_loc=$_SERVER['DOCUMENT_ROOT'].'/some_dir/test.jpg'; $file_handler=fopen($file_loc,'w'); if(fwrite($file_handler,$img_file)==false){ echo 'error'; } fclose($file_handler); 

См. file() Руководство по PHP :

 $url = 'http://img.ruphp.com/image/0ed9320413f3ba172471860e77b15587.jpg'; $img = 'miki.png'; $file = file($url); $result = file_put_contents($img, $file) 

Создайте папку с именем images, расположенную в пути, который вы планируете разместить созданный php-скрипт. Удостоверьтесь, что у него есть права на запись для всех или скрипты не будут работать (он не сможет загрузить файлы в каталог).