Saving image from PHP URL

    |
  • Added:
  • |
  • In: Basic PHP

I need to save an image from a PHP URL to my PC. Let's say I have a page, http://example.com/image.php, holding a single "flower" image, nothing else. How can I save this image from the URL with a new name (using PHP)?

This Question Has 9 Answeres | Orginal Question | riad
$img_file='http://www.somedomain.com/someimage.jpg' $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); 
copy('http://example.com/image.php', 'local/folder/flower.jpg'); 

I wasn't able to get any of the other solutions to work, but I was able to use wget:

$tempDir = '/download/file/here'; $finalDir = '/keep/file/here'; $imageUrl = 'http://www.example.com/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'); } 

Vartec's answer with cURL didn't work for me. It did, with a slight improvement due to my specific problem.

e.g.,

When there is a redirect on the server (like when you are trying to save the facebook profile image) you will need following option set:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

The full solution becomes:

$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); 

Here you go, the example saves the remote image to 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://www.someimagesite.com/img.jpg','image.jpg'); 

If you have allow_url_fopen set to true:

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

Else use 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); 

See file()PHP Manual:

$url = 'http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg'; $img = 'miki.png'; $file = file($url); $result = file_put_contents($img, $file) 

Create a folder named images located in the path you are planning to place the php script you are about to create. Make sure it has write rights for everybody or the scripts won't work ( it won't be able to upload the files into the directory).

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

Search
I am...

Sajjad Hossain

I have five years of experience in web development sector. I love to do amazing projects and share my knowledge with all.

Connect Social With PHPAns
Top