Je dois enregistrer 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 enregistrer cette image à partir de l'URL sous un nouveau nom (en utilisant PHP)?
Si allow_url_fopen
est 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);
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);
Ici, 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. Cela a été le cas, avec une légère amélioration due à 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 devez définir les options suivantes:
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 à utiliser aucune des 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');
}
$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);
Voir file()
PHP Manuel :
$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 allez créer. Assurez-vous qu'il a des droits en é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 paquet packagist.org/packages/tohidhabiby/htmltoimage pour générer une image à partir de l’url de votre cible.
$data = file_get_contents('http://example.com/image.php');
$img = imagecreatefromstring($data);
imagepng($img, 'test.png');