preg_match_all - Guardando imagen desde la URL de PHP
php parser html dom (9)
Aquí tienes, el ejemplo guarda la imagen remota en 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'');
Necesito guardar una imagen de una URL de PHP en mi PC. Digamos que tengo una página, http://example.com/image.php
, que contiene una sola imagen de "flor", nada más. ¿Cómo puedo guardar esta imagen de la URL con un nuevo nombre (usando PHP)?
Cree una carpeta con el nombre de las imágenes ubicadas en la ruta de acceso que está planeando colocar el script php que está a punto de crear. Asegúrese de que tenga derechos de escritura para todos o los scripts no funcionarán (no podrá cargar los archivos en el directorio).
No pude hacer funcionar ninguna de las otras soluciones, pero pude usar 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'');
}
Si tiene allow_url_fopen
establecido en true
:
$url = ''http://example.com/image.php'';
$img = ''/my/folder/flower.gif'';
file_put_contents($img, file_get_contents($url));
De lo contrario, utilice 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);
Ver file()
Manual de PHP :
$url = ''http://mixednews.ru/wp-content/uploads/2011/10/0ed9320413f3ba172471860e77b15587.jpg'';
$img = ''miki.png'';
$file = file($url);
$result = file_put_contents($img, $file)
La respuesta de Vartec con cURL no funcionó para mí. Lo hizo, con una leve mejora debido a mi problema específico.
p.ej,
Cuando haya una redirección en el servidor (como cuando intenta guardar la imagen del perfil de Facebook) necesitará la siguiente opción:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
La solución completa se convierte en:
$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);
$content = file_get_contents(''http://example.com/image.php'');
file_put_contents(''/my/folder/flower.jpg'', $content);
$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);
copy(''http://example.com/image.php'', ''local/folder/flower.jpg'');