2010-09-11 20 views
22

Eventuali duplicati:
Saving image from PHP URL using PHPPHP salvare file immagine

Hi Ho un'immagine come collegamento URL dal sito pollice web 3rd party (IE http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com) Quello che mi piacerebbe fare è eseguire uno script che prende l'immagine e lo salva in una directory sul mio server utilizzando php. Qualcuno può indicarmi il modo giusto per farlo? dovrei usare File Write?

+0

Per la mia risposta a lavorare l'installazione di PHP deve essere compilato con la libreria GD (la maggior parte sono) ... –

+0

Sede [ file di salvataggio utilizzando ricciolo ] (http://stackoverflow.com/questions/1006604/saving -file-con-curl/1006629 # 1006629). –

+0

Ecco un tutorial che mostra come eseguire questa operazione in due modi. http://edmondscommerce.github.io/php/curl/php-save-images-using-curl.html – MZaragoza

risposta

47

Non c'è bisogno di creare una risorsa GD, come qualcun altro ha suggerito.

$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com'; 
$output = 'google.com.jpg'; 
file_put_contents($output, file_get_contents($input)); 

Nota: questa soluzione funziona solo se si è configurato per consentire l'accesso di fopen agli URL. Se la soluzione sopra non funziona, dovrai usare cURL.

+1

+1 per non aver bisogno di GD – timdev

+0

Quanto è efficiente. –

17

Nota: è possibile utilizzare accepted answer se possibile. È meglio del mio

È abbastanza facile con il GD library.

E 'costruita in genere, è probabile che esso (uso phpinfo() per verificare)

$image = imagecreatefromjpeg("http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com"); 

imagejpeg($image, "folder/file.jpg"); 

La risposta di cui sopra è migliore (più veloce) per la maggior parte delle situazioni, ma con GD è anche possibile modificare in qualche forma (ritaglio per esempio).

$image = imagecreatefromjpeg("http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com"); 
imagecopy($image, $image, 0, 140, 0, 0, imagesx($image), imagesy($image)); 
imagejpeg($image, "folder/file.jpg"); 

questo funziona solo se è allow_url_fopentrue (lo è di default)

+0

Funziona solo se allow_url_fopen è true. –

+0

@ Ólafur Waage sicuro, ma per lo stesso motivo, cURL funziona solo se l'estensione curl è disponibile e abilitata sul tuo sistema. – JAL

+3

Questo sta forzando GD a decodificare e codificare l'immagine senza motivo. Ciò significa anche che è * lossy * e imagejpeg usa solo il 75% di qualità per impostazione predefinita. Tutto il PO richiesto è un download (una copia bit per bit). –

Problemi correlati