Ich muss ein Bild von einer PHP - URL auf meinem PC speichern. __ Nehmen wir an, ich habe eine Seite http://example.com/image.php
, die ein einzelnes "Blumen" -Bild enthält, sonst nichts. Wie kann ich dieses Bild von der URL unter einem neuen Namen speichern (mit PHP)?
Wenn Sie allow_url_fopen
auf true
eingestellt haben:
$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));
Sonst verwenden Sie 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);
Los geht's, das Beispiel speichert das Remote-Image in 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');
Vartecs Antwort mit cURL hat bei mir nicht funktioniert. Mit einer leichten Verbesserung aufgrund meines spezifischen Problems.
z.B.,
Wenn sich auf dem Server eine Umleitung befindet (z. B. wenn Sie versuchen, das Facebook-Profilbild zu speichern), benötigen Sie folgende Option:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
Die vollständige Lösung wird:
$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);
Ich habe keine der anderen Lösungen bekommen können, aber ich konnte wget verwenden
$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);
Siehe file()
PHP Handbuch :
$url = 'http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg';
$img = 'miki.png';
$file = file($url);
$result = file_put_contents($img, $file)
Erstellen Sie einen Ordner mit dem Namen images, der sich in dem Pfad befindet, den Sie zum Platzieren des zu erstellenden PHP-Skripts verwenden möchten. Stellen Sie sicher, dass es über Schreibrechte für alle Benutzer verfügt, oder die Skripts funktionieren nicht (die Dateien können nicht in das Verzeichnis hochgeladen werden).
installieren Sie wkhtmltoimage auf Ihrem Server und verwenden Sie dann mein Paket packagist.org/packages/tohidhabiby/htmltoimage, um ein Image aus der URL Ihres Ziels zu generieren.
$data = file_get_contents('http://example.com/image.php');
$img = imagecreatefromstring($data);
imagepng($img, 'test.png');