Hola soy nuevo por aqui y por esto de php también veréis. El tema esque tengo unas imagenes en carpeta las cuales quiero redimensionar y mostrar. Logro redimensionar , tambien leer todas las imagenes del directorio, pero el tema es que si tengo 5 imagenes en el directorio me muestra 5 imagenes redimensionadas pero siempre es la misma imagen en los 5 casos y siempre la ultima que lista del directorio. ¿Que esta pasando, que hago mal? Os muestro mi codigo de la classe donde realizo esto.
<?php
function autocarga($clase) {
include './' . $clase . '.php';
}
spl_autoload_register("autocarga");
$ruta="../";
if(is_dir($ruta)){
//Abre el directorio para leer su contenido
$imagenes=opendir($ruta);
//recorro todo el directorio guardado cada archivo
while(false!==($imagen=readdir($imagenes))){
$arrayext = explode(".", $imagen);
$num = count($arrayext) - 1;
//Siempre añade un archivo . y otro ..
if ($arrayext[$num]=="gif"||$arrayext[$num]=="jpg"||$arrayext[$num]=="png") {
$arrayimagenes[]=$ruta.$imagen;
}
}
foreach($arrayimagenes as $value){
$img2=cambiartam($value);
echo "<img src='$img2'></img><br>";
}
}
function cambiartam($nombre){
$arrayext = explode(".",$nombre);
$num = count($arrayext) - 1;
$tmp=$arrayext[$num];
if ($tmp=="jpg"){
$imagen=imagecreatefromjpeg($nombre);
}
if ($tmp=="png"){
$imagen=imagecreatefrompng($nombre);
}
if ($tmp=="gif"){
$imagen=imagecreatefromgif($nombre);
}
$ancho=imageSX($imagen);
$alto=imageSY($imagen);
$anchofinal = 200;
//Ancho final en pixeles
$altofinal = ($anchofinal / $ancho) * $alto;
//SI CONOCEMOS UN ALTO FINAL FIJO, calculamos el ANCHO de forma proporcionada
//Para usar este caso, comentar las dos lineas anteriores, y descomentar las dos siguientes a este comentario
/*$alto_final = 250; //Alto final en pixeles
$ancho_final = ($alto_final / $alto_original) * $ancho_original;*/
//Creo una imagen vacia, con el alto y el ancho que tendrá la imagen redimensionada
$imagenredimensionada = imagecreatetruecolor($anchofinal, $altofinal);
//Copio la imagen original con las nuevas dimensiones a la imagen en blanco que creamos en la linea anterior
imagecopyresampled($imagenredimensionada, $imagen, 0, 0, 0, 0, $anchofinal, $altofinal, $ancho, $alto);
//Guardo la imagen ya redimensionada
imagepng($imagenredimensionada,'imagen_redimension ada.png');
//Libero recursos, destruyendo las imágenes que estaban en memoria
imagedestroy($imagen);
imagedestroy($imagenredimensionada);
return 'imagen_redimensionada.png';
}
?>
Se que ahora mismo solo crea para imagenes png tal como esta pero estaba probando que al menos funcionara estos.
Muchas gracias. Saludos