El siguiente código sólo funciona con jpeg o con gif, pero no con ambos. En realidad dónde pone jpeg se pone gif o png y ya valdría.
La llamada es:
<img src="redimensionar.php?ruta=fotos/$row_foto_subfam[foto]&ancho=128&alto=98" alt="$row_foto_subfam[nombreproducto]" />
El archivo redimensionar.php tiene este código:
<?php
/*Este Archivo Recibe Los Parametros $ruta, Que Es La Ruta Interna De La Imagen En El Servidor,
Y Los Parametros $ancho y $alto Que Se Refiere Al Alto Y Ancho De La Previsualizacion.*/
$F_ancho = $_GET["ancho"];
$F_alto = $_GET["alto"];
$fuente = @ImagecreatefromJpeg($_GET["ruta"]);
$imagen = Imagecreatetruecolor($F_ancho, $F_alto); // crea el recurso gd para la salida
// desactivo el procesamiento automatico de alpha
Imagealphablending($imagen, false);
// hago que el alpha original se grabe en el archivo destino
Imagesavealpha($imagen, true);
Imagecopyresampled($imagen, $fuente, 0, 0, 0, 0, $F_ancho, $F_alto, ImageSX ($fuente),imagesy($fuente)); // redimensiona
header("Content-type: image/jpeg");
imagejpeg($imagen);
?>
En una función no he conseguido hacerlo.
Intuyo además que se podría hacer con porcentajes, haciendo cálculos con los porcentajes y las propiedades de los archivos, pero en fin.
Hay que tener en cuenta que hace falta llamar a la función get_extension, que está en el fichero utils.php.
Esto o poner el código de get_extension directamente en este archivo; redimensionar.php
Finalmente el código queda:
<?php
include ("admin/utils.php");
/*Este Archivo Recibe Los Parametros $ruta, Que Es La Ruta Interna De La Imagen En El Servidor,
Y Los Parametros $ancho y $alto Que Se Refiere Al Alto Y Ancho De La Previsualizacion.*/
$F_ancho = $_GET["ancho"];
$F_alto = $_GET["alto"];
//$fuente = @ImagecreatefromJpeg($_GET["ruta"]);
$imagen = Imagecreatetruecolor($F_ancho, $F_alto); // crea el recurso gd para la salida
// desactivo el procesamiento automatico de alpha
Imagealphablending($imagen, false);
// hago que el alpha original se grabe en el archivo destino
Imagesavealpha($imagen, true);
$ext= strtolower(get_extension($_GET["ruta"]));
switch ($ext){
case "jpg":
$fuente = @ImagecreatefromJpeg($_GET["ruta"]);
Imagecopyresampled($imagen, $fuente, 0, 0, 0, 0, $ancho, $alto, ImageSX ($fuente),imagesy($fuente));
header("Content-type: image/jpeg");
imagejpeg($imagen);
break;
case "gif":
$fuente = @ImagecreatefromGif($_GET["ruta"]);
Imagecopyresampled($imagen, $fuente, 0, 0, 0, 0, $ancho, $alto, ImageSX ($fuente),imagesy($fuente));
header("Content-type: image/gif");
imagegif($imagen);
break;
}
?>