Risposte:
Se hai allow_url_fopen
impostato su true
:
$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));
Altrimenti usa 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
variabile contenente l'URL dell'immagine http://example.com/fetch-image.php?url=http://blabla.com/flower.jpg
. Nel caso di questo esempio, si può solo chiamare $_GET['url']
nello script PHP, in questo modo: $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);
Ecco qua, l'esempio salva l'immagine remota 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');
La risposta di Vartec con CURL non ha funzionato per me. Lo ha fatto, con un leggero miglioramento dovuto al mio problema specifico.
per esempio,
Quando c'è un reindirizzamento sul server (come quando si sta tentando di salvare l'immagine del profilo Facebook) è necessario il seguente set di opzioni:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
La soluzione completa diventa:
$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);
Non sono riuscito a far funzionare nessuna delle altre soluzioni, ma sono stato in grado di utilizzare 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');
}
Vedi file()
manuale PHP :
$url = 'http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg';
$img = 'miki.png';
$file = file($url);
$result = file_put_contents($img, $file)
installa wkhtmltoimage sul tuo server quindi usa il mio pacchetto packagist.org/packages/tohidhabiby/htmltoimage per generare un'immagine dall'URL del tuo target.
file_put_contents
ecc.