Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2011, 03:52
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 10 meses
Puntos: 29
Exclamación Problemas redimensionando imágenes PNG para hacer miniaturas

Hola amigos.
Estoy haciendo unas miniaturas con PHP pero no me funciona con ninguna imagen PNG. El resultado es que la imagen "contiene errores" y no se muestra.

El código es igual para gif, jpg, jpeg y png. El de png es el siguiente:

Código PHP:
Ver original
  1. $maxAlto = $_GET['alto'];
  2. $maxAncho = $_GET['ancho'];
  3. $id = $_GET['id'];
  4.  
  5. /* AQUÍ SELECCIONO LA FOTO A REDIMENSIONAR */
  6.  
  7. $sql = "SELECT * FROM productos WHERE id=".$id;
  8. $rs = mysql_query($sql, $conexion) or die (mysql_error());
  9. $fila = mysql_fetch_object($rs);
  10.  
  11. $ruta = "../".$fila->foto;
  12.  
  13. $rutaTmp = explode(".", $fila->ruta);
  14.  
  15. /*ESTA ES LA EXTENSIÓN DE LA FOTO */
  16. $ext = $rutaTmp[count($rutaTmp)-1];
  17.  
  18. /*aquí empieza el código exclusivo de PNG */
  19.     $fuente = imagecreatefrompng($ruta);
  20.     $imgAncho = imagesx ($fuente);
  21.     $imgAlto =imagesy($fuente);
  22. //determina proporcion en unidades
  23. $ancho = $imgAncho/$maxAncho;
  24. $alto = $imgAlto/$maxAlto;
  25.  
  26. // calcula la escala
  27. if($ancho>$alto) $scale = $maxAncho/$imgAncho;
  28. if($ancho<$alto) $scale = $maxAlto/$imgAlto;
  29. if($ancho==$alto) $scale = $maxAlto/$imgAlto;
  30. $ancho = intval($imgAncho*$scale);
  31. $alto = intval($imgAlto*$scale);
  32.     $imagen = imagecreatetruecolor($ancho,$alto);
  33.  
  34.     imagecopyresampled($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
  35.    
  36.     Header("Content-type: image/png");
  37.     imagePng($imagen);


Cabe destacar que lo mismo para jpg (cambiando las funciones imagePng por imageJpeg, y el resto igual) funciona perfectamente, pero el código superior nunca consigue hacerme una miniatura con una imagen PNG.

¿qué estoy haciendo mal?

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.