Foros del Web » Programando para Internet » PHP »

Renombrar imagenes

Estas en el tema de Renombrar imagenes en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando crear un script que se compone en dos partes, la primera parte del script se mete en una carpeta, y ...
  #1 (permalink)  
Antiguo 25/05/2010, 08:33
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Renombrar imagenes

Hola a todos. Estoy intentando crear un script que se compone en dos partes, la primera parte del script se mete en una carpeta, y obtiene el numero mayor de los archivos (la carpeta tiene imágenes con el siguiente nombre "Imagen004.jpg", "Imagen008.jpg", "Imagen015.jpg", "Imagen016.jpg", "Imagen023.jpg", "Imagen042.jpg", por ejemplo, y el script obtiene los números de los ficheros, y me dice cual es el numero mayor que hay) Esta parte del script me funciona perfectamente.

Ahora la segunda parte del script, quiero que coja las imágenes de otra carpeta y las renombre siguiendo el numero de la carpeta anterior, sin modificar el orden. Pero dentro de esta carpeta tambien hay imagenes con la misma sintaxis que la carpeta anterior. Pero con el script que he creado no lo renombra.

En resumen, lo que quiero que haga es lo siguiente:
1º -> Me diga cual es el numero mayor de las imágenes de la ruta 1.
2ª -> Renombre las imágenes de la ruta 2, siguiendo el ordena de la ruta 1 y sin alterar el orden de la imagenes de la ruta 2.

Miren si hay algún fallo, o como podría resolverlo. Muchas gracias.

Primer parte del script (no hay fallos, todo funciona bien, lo pongo por si a alguien le interesa)
Código PHP:

$dir
="/home/jota/Mobil/"
$directorio opendir($dir); 
while (
$archivo readdir($directorio)) { 
if (
$archivo=="." || $archivo=="..") { echo " "; } else { 
$archivos[$archivo] = $archivo;
}
}  
ksort ($archivos);
foreach (
$archivos as $archivo) { } 
$max substr($archivo,6,3); 
Segunda Parte del script:

Código PHP:
$au '1';
$path '/home/jota/Escritorio/Moblis/';
$directorio opendir($path); 
while (
$archivo readdir($directorio)) { 
if (
$archivo=="." || $archivo=="..") { echo " "; } else { 
$archivos[$archivo] = $archivo;
}
}  
ksort ($archivos);
foreach (
$archivos as $archivo) {
    
$num substr($archivo,6,3);
    
$num1 $max $au;
    
$au $au 1;
    
$numfinal str_pad($num130STR_PAD_LEFT);
    echo 
$numfinal;
    echo 
'<br>';
    
rename ($path.'Imagen'.$num.'.jpg'$path.'Imagen'.$numfinal.'.jpg');
    } 
Creo que todo funciona bien, lo único que no sale bien, es la función de renombrar. Lo único que sale mal. Tambien he probado a hacer "rename ('Imagen'.$num.'.jpg', 'Imagen'.$numfinal.'.jpg');" pero tampoco lo renombra.

Última edición por Jota_sk; 25/05/2010 a las 08:40 Razón: Más informacion.
  #2 (permalink)  
Antiguo 25/05/2010, 10:17
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Renombrar imagenes

Resumiendo:

Para renombrar debes hacer una copia de la imagen darle un nombre y eliminar la copiada,


Algo asi seria:

$r=copy("original.jpg","nuevonombre.jpg");

if($r){
unlink("original.jpg");
}
  #3 (permalink)  
Antiguo 26/05/2010, 05:22
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Renombrar imagenes

He hecho lo que me has dicho, pero no me copias los archivos. Le he dados permisos 777 a la carpeta y todo, pero nada.

Ven algún error o alguna solución posible?

Código PHP:
$au '1';
$path '/home/jota/Escritorio/Moblis/';
$directorio opendir($path); 
while (
$archivo readdir($directorio)) { 
if (
$archivo=="." || $archivo=="..") { echo " "; } else { 
$archivos[$archivo] = $archivo;
}
}  
ksort ($archivos);
foreach (
$archivos as $archivo) {
    
$num substr($archivo,6,3);
    
$num1 $max $au;
    
$au $au 1;
    
$numfinal str_pad($num130STR_PAD_LEFT);
    
$imgfinal 'Imagen'.$numfinal.'.jpg';
    
$r copy($archivo$imgfinal);
        if(
$r){
            
unlink($archivo);
        }
    } 
Muchas gracias!
  #4 (permalink)  
Antiguo 26/05/2010, 05:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Renombrar imagenes

http://php.net/manual/es/streamwrapper.rename.php
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #5 (permalink)  
Antiguo 26/05/2010, 06:09
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Renombrar imagenes

ya lo he hecho funcionar pero no lo entiendo que hace mal, he hecho un echo final de todas las variables, esta bien, pero a la hora de renombrarlas. Me las renombra diferente numero. Por ejemplo, la última imagen es "Imagen034.jpg" Entonces me saca el numero bien, y le suma 1, y me muestra el 035, pero a la hora de renombrar me pone 047. No lo entiendo que esta sucediendo.
Código PHP:
foreach ($archivos as $archivo) {
    
$num substr($archivo,6,3);
    
$num1 $max $au;
    
$au $au 1;
    
$numfinal str_pad($num130STR_PAD_LEFT);
    
$imgfinal $path.'Imagen'.$numfinal.'.jpg';
    echo 
$archivo.' - '.$numfinal.' - '.$imgfinal.'<br>';
    
$r copy($path.$archivo$imgfinal);
        if(
$r){
            
unlink($archivo);
        }
    } 
  #6 (permalink)  
Antiguo 26/05/2010, 07:21
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
A ver asi mas simplificado:



foreach ($archivos as $archivo) {
$num_rand=rand(1,10);
//dejar $archivo tiene la ventaja que no necesitas saber que extension tiene este
//no tienes que escribirla: ".jpg"
$r = copy($archivo, $num_rand."_".$archivo);
if($r){
unlink($archivo);
}
}

Completo (uso scandir())

//Fijate este condicional (sin else) if($archivo != "." && $archivo != "..")


$resul_scand=scandir("ruta/");
foreach($resul_scand as $archivo){
if($archivo != "." && $archivo != ".."){
$num_rand=rand(1,10);
//dejar $archivo tiene la ventaja que no necesitas saber que extension tiene este
//no tienes que escrivirla: ".jpg"
$r = copy("ruta/".$archivo, "ruta/".$num_rand."_".$archivo);
if($r){
unlink("ruta/".$archivo);
}
}
}

Me falto crear un array previamente... jeje



$archivos_array = array();

$resul_scand=scandir("DIR/");
foreach($resul_scand as $archivo){
if($archivo != "" && $archivo != ".."){
$archivos_array[]=$archivo;
}
}

ksort($archivos_array);

foreach($archivos_array as $archivo);

$num_rand=rand(1,10);
//dejar $archivo tiene la ventaja que no necesitas saber que extension tiene este
//no tienes que escrivirla: ".jpg"
$r = copy("DIR/".$archivo, "DIR/".$num_rand."_".$archivo);
if($r){
unlink("DIR/".$archivo);
}

}




....Bueno no lo probe pero creo que funciona...

Última edición por GatorV; 26/05/2010 a las 08:47

Etiquetas: imagenes, renombrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:13.