Réponses:
Si vous avez allow_url_fopen
défini 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);
$_GET
variable contenant l'URL de l'image http://example.com/fetch-image.php?url=http://blabla.com/flower.jpg
. Dans le cas de cet exemple, vous pouvez simplement appeler $_GET['url']
dans votre script PHP, comme suit: $ch = curl_init($_GET['url']);
.
copy('http://example.com/image.php', 'local/folder/flower.jpg');
allow_url_fopen
).
$content = file_get_contents('http://example.com/image.php');
file_put_contents('/my/folder/flower.jpg', $content);
Voilà, l'exemple enregistre l'image distante dans 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');
La réponse de Vartec 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,
Lorsqu'il y a une redirection sur le serveur (comme lorsque vous essayez d'enregistrer l'image de profil Facebook), vous aurez besoin du jeu d'options suivant:
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);
Je n'ai pas réussi à faire fonctionner les autres solutions, mais j'ai pu utiliser 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');
}
Voir file()
le manuel PHP :
$url = 'http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg';
$img = 'miki.png';
$file = file($url);
$result = file_put_contents($img, $file)
Créez un dossier nommé images situé dans le chemin que vous prévoyez de placer le script php que vous êtes sur le point de créer. Assurez-vous qu'il a des droits d'écriture pour tout le monde ou les scripts ne fonctionneront pas (il ne pourra pas télécharger les fichiers dans le répertoire).
installez wkhtmltoimage sur votre serveur puis utilisez mon package packagist.org/packages/tohidhabiby/htmltoimage pour générer une image à partir de l'url de votre cible.
file_put_contents
etc.