El script, básicamente consiste en 2 funciones:
La 1ª almacena en un path todas las imágenes (cogiendo la etiqueta img de html).
Y la segunda crea una copia para cada imagen en nuestra máquina local, dentro de la carpeta images.
Sin más dilación os dejo el código:
<?phpfunction imagenesHTML($url, $norepetidos = true)
{
$contenido = @file($url);
$contenido = array_map("trim", $contenido);
$contenido = implode(" ", $contenido);
if ( preg_match_all('/<img([^<>]+)>/i', $contenido, $match) ) {
foreach($match[1] as $atributos) {
if ( preg_match('/src="([^"]+)"/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
} elseif ( preg_match('/src=([^ ]+)/i', $atributos, $matchpaths) ) {
$pathimgs[] = $matchpaths[1];
}
unset($matchpaths);
}
}
if ( !empty($pathimgs) ) {
if ($norepetidos) {
return array_unique($pathimgs);
} else {
return $pathimgs;
}
} else {
return false;
}
}
function guarda_imagen ($img, $nombre){
$size =@getimagesize ($img);
if($size!=''){
$ancho = $size[0];
$alto = $size[1];
$thumbnail = ImageCreateTrueColor( $ancho, $alto );
switch ($size['mime']){
case 'image/jpeg':
$tipo=".jpg";
$src_img = ImageCreateFromJPEG( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
ImageJPEG( $thumbnail, "images/".$nombre.".jpg" );
break;
case 'image/png':
$tipo=".png";
$src_img = imagecreatefrompng( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagepng ( $thumbnail, "images/".$nombre.".png" );
break;
case 'image/gif':
$tipo=".gif";
$src_img = imagecreatefromgif ( $img );
ImageCopyResampled( $thumbnail, $src_img, 0, 0, 0, 0, $ancho, $alto, $size[0], $size[1] );
imagegif ( $thumbnail, "images/".$nombre.".gif" );
break;
default:
ImageDestroy( $thumbnail );
return false;
}
ImageDestroy( $thumbnail );
return $tipo;
}
else
return false;
}?> <html>
<head>
<title>Captura Imagenes de una URL</title>
</head>
<body>
<h1>Capturador de Imagenes</h1>
<form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="post">
URL: <input type="text" name="url" value=""/>
<input type="submit" name="BOTON" value="Capturar" />
</form> <?php
if ($_POST['BOTON']=='Capturar'){
$imagenes = @imagenesHTML($_POST['url']);
if ($imagenes!=''){
if (!is_dir('./images')) mkdir("images");
$i=0;
foreach ($imagenes as $imagen){
$img = split ('/', $imagen);
if (count($img)<=1){
$url= split('/', $_POST['url']);
$ori=$imagen;
$imagen='';
$tope=count($url)-1;
for ($j=0; $j<$tope; $j++)
$imagen.=$url[$j].'/';
$imagen.=$ori;
}
$ok = guarda_imagen ($imagen, 'imagen_'.$i);
if ($ok==false) echo 'no se ha podido descargar la imagen: '.$imagen.'<br/>';
else{
echo '<img src="images/imagen_'.$i.$ok.'"/><br/>';
$i++;
}
}
}
}
?> </body>
</html>
excelente trabajo, gracias
ResponderEliminartengo una pregunta.
por que en linea 77 me da un error?
Notice: Undefined index: 1 in C:\wamp\www\x\index.php on line 77
Call Stack
# Time Memory Function Location
1 0.0023 401888 {main}( ) ..\index.php:0
prueba : if (!empty($_POST['BOTON']) and $_POST['BOTON'] == 'Capturar')
Eliminar