Holas charlyta
Desde el script que muestra el array de imágenes, haz un ciclo que lea una a una las imágenes, cada una tiene su propia ruta (carpeta y nombre de archivo). Luego, en vez de poner esa ruta (la dirección real de la imagen) en el SRC de IMG, debes invocar al script php que contiene la creación de la imagen redimensionada que has dicho.
mostrar.php Código PHP:
<?
// en este ejemplo asumo que tienes las rutas
// de las imagenes ya guardadas en tu array
$imagenes = array("carpeta/imagen1.jpg",
"carpeta/imagen2.jpg",
"carpeta/imagenX.jpg",
"carpeta/imagenZ.jpg");
$total = count($imagenes);
for ($i = 0; $i < $total; $i++)
{
?><img src="imagen_reducida.php?ruta=<?= $imagenes[$i]; ?>"><?
} // fin For
?>
imagen_reducida.php Código PHP:
<?
header( "Content-type: image/jpeg" );
// RECIBES LA RUTA DE LA IMAGEN A REDIMENSIONAR
$ruta_imagen = $_GET["ruta"];
// Creamos una imagen desde un archivo jpeg
$img2 = imagecreatefromjpeg($ruta_imagen);
// Obtenemos la mitad del tamaño de la imagen
$w1 = intval( imagesx( $img2 ) / 2 );
$h1 = intval( imagesy( $img2 ) / 2 );
// Creamos una segunda imagen de la mitad de
// tamaño que el archivo jpeg
$img1 = imagecreatetruecolor( $w1, $h1 );
// Escalamos la imagen jpeg sobre la imagen nueva
imagecopyresized( $img1, $img2, 0, 0, 0, 0, $w1, $h1, imagesx( $img2 ), imagesy( $img2 ) );
// Damos salida a la imagen final
imagejpeg( $img1 );
// Destruimos ambas imágenes
imagedestroy( $img1 );
imagedestroy( $img2 ); ?>