440 votes

Enregistrement de l'image depuis l'URL PHP

J'ai besoin de sauvegarder une image d'une URL PHP sur mon PC. Disons que j'ai une page, http://example.com/image.php , contenant une seule image "fleur", rien d'autre. Comment puis-je sauvegarder cette image de l'URL avec un nouveau nom (en utilisant PHP)?

776voto

vartec Points 53382

Si vous avez allow_url_fopen défini sur true :

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

Sinon, utilisez 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);
 

281voto

Halil Özgür Points 5486
copy('http://example.com/image.php', 'local/folder/flower.jpg');

82voto

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

33voto

stoefln Points 2717

Vartec réponse avec cURL n'a pas fonctionné pour moi. Il l'a fait, avec une légère amélioration en raison de mon problème spécifique.

par exemple,

Quand il y a une redirection sur le serveur (comme quand vous êtes à essayer de sauver le facebook image de profil), vous aurez besoin suivant option:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

La solution complète devient:

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

30voto

Sam152 Points 8472

Ici vous allez, l'exemple enregistre l'image distante à 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');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X