Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2005, 08:00
benfiter
 
Fecha de Ingreso: octubre-2003
Ubicación: Villava [NA]
Mensajes: 13
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Problemas GD redimensionando JPGs XXL

Buenas,

Tengo problemas con un script que hice para redimensionar "dinámicamente" las imágenes que subo desde un administrador. Funciona con JPG, GIF y PNG, pero por alguna razón, si el archivo es JPG y mide más de 1000 px (es una estimación, a 900 funciona) de lado, no muestra las imágenes.

¿Sabéis si es posible que la librería GD tenga limitaciones para la imagen a tratar? No he podido averiguar qué versión está instalada en el servidor (está desactivada la función "phpinfo()").

Por favor, echad un vistazo a mi código por si veis errores...

Código PHP:
<?php
/***************************************************
VARIABLES (DE PASO POR URL) QUE REQUIERE ESTE SCRIPT
$seccion: equivale en este caso al directorio en el que se almacena la imagen.
$imagen: nombre de la imagen.
$x: anchura máxima en píxeles. Es opcional.
$Y: altura máxima en píxeles. Es opcional.
****************************************************/

// Recuperar la ruta de la imagen almacenada en la base de datos.
$imagen "img/".$_GET[seccion]."/".$_GET[imagen];

// Establecer anchura predeterminada.
if (empty($_GET[x]))
    {
    
$max_width 400;
    }
else
    {
    
$max_width $_GET[x];
    }

// Establecer altura predeterminada.
if (empty($_GET[y]))
    {
    
$max_height 400;
    }
else
    {
    
$max_height $_GET[x];
    }

// Obtener tamaños y tipo de la imagen original.
$tamanos getimagesize("$imagen");

$original_width $tamanos[0];
$original_height $tamanos[1];

$width $original_width;
$height $original_height;

// En caso de que sea demasiado alta, fija el máximo.
if ($height $max_height
    {
    
$width = ($max_height $height) * $width;
    
$height $max_height;
    }

// En caso de que sea demasiado ancha, fija el máximo.
if ($width $max_width
    {
    
$height = ($max_width $width) * $height;
    
$width $max_width;
    }
$imagen_nueva imagecreatetruecolor($width$height);

$tipo $tamanos[2];
/* 
VALORES QUE DEVUELVE EL ARRAY $tamanos[2]:
    1 = GIF
    2 = JPG
    3 = PNG
    4 = SWF
    5 = PSD
    6 = BMP
    7 = TIFF(orden de bytes intel)
    8 = TIFF(orden de bytes motorola)
    9 = JPC
    10 = JP2
    11 = JPX
    12 = JB2
    13 = SWC
    14 = IFF
    15 = WBMP
    16 = XBM
*/

// OJO: la compilación de la librería GD que lleva el PHP de XXXXX no contempla el manejo de archivos GIF;
// por este motivo, se generará la miniatura de la imagen como PNG.

    
if ($tipo == 1)
        {
        
$img imagecreatefromgif($imagen);
        
imagecopyresampled($imagen_nueva$img0000$width$height$original_width$original_height);
        
Header("Content-type: image/png"); 
        
imagepng($imagen_nueva);
        }
    elseif (
$tipo == 2)
        {
        
$img imagecreatefromjpeg($imagen);
        
imagecopyresampled($imagen_nueva$img0000$width$height$original_width$original_height);
        
Header("Content-type: image/jpeg"); 
        
imagejpeg($imagen_nueva);
        }
    elseif (
$tipo == 3)
        {
        
$img imagecreatefrompng($imagen);
        
imagecopyresampled($imagen_nueva$img0000$width$height$original_width$original_height);
        
Header("Content-type: image/x-png"); 
        
imagepng($imagen_nueva);
        }
    
imagedestroy($imagen_nueva);
?>
Gracias