Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2012, 11:02
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Problema. "Headers Already Sent"

Tengo un script para redimensionar imágenes (tal vez le sirva a alguien para reutilizar) con imagemagick pero de repente me ha empezado a dar error de que las cabeceras ya han sido enviadas, cuando antes no lo hacía. ¿alguna idea? No se que hay mal.

Código PHP:
<?php
    
//VARIABLES
    
$rutaImagick "/ruta/a/mi/imagick6.7/bin";
    
$imagen $_GET["i"];
    
$ancho 0;
    
$alto 0;
    
$color white;
    if (isset(
$_GET["an"])) {$ancho $_GET["an"];}
    if (isset(
$_GET["al"])) {$alto $_GET["al"];}
    
//preparamos nombre de la imagen
    
$extension pathinfo($imagenPATHINFO_EXTENSION); //separamos extension (útil si más adelante queremos conservar extensión original del archivo
    
$nombreBase basename($imagen'.'.$extension); //separamos nombre base
    
$nombreImagen "RE." "$nombreBase$ancho" "ANx" "$alto" "AL" ".jpg"//todas las imágenes se convierten a jpg
    
if (file_exists($nombreImagen)) //Si existe no convertimos, mostramos directamente
    
{
        
Header("Content-Type: image/jpeg");
        
readfile($nombreImagen);
    }
    else
    {
        if (
$ancho!=&& $alto==0//Si no tiene alto o es 0 es que la imagen se reduce a proporción
        
{
            
$conversion "$rutaImagick/convert -quality 90% $imagen";
            
exec("$rutaImagick/convert $conversion -scale $ancho $nombreImagen");
            
Header("Content-Type: image/jpeg"); // se envia la cabecera...
            
readfile($nombreImagen);
        }
        else if(
$ancho==&& $alto!=0//Si sólo tiene definido el alto
        
{
            
$medida "x" $alto;
            
$conversion "$rutaImagick/convert -quality 90% $imagen";
            
exec("$rutaImagick/convert $conversion -scale $medida $nombreImagen");
            
Header("Content-Type: image/jpeg"); // se envia la cabecera...
            
readfile($nombreImagen);
        }
        else 
//ninguno de los 2 es 0. Se pone la imagen al tamaño exacto deseado rellenando espacios vacíos con el color seleccionado
        
{
            
$medida $ancho "x" $alto;
            
//exec("convert $imagen -resize $medida -background $color -compose Copy -gravity center -extent $medida $nombreImagen");
            //CODIGO FUNCIONANDO BIEN POR CONSOLA:  convert tal.jpg -resize 300x50 -background white -gravity center -extent 300x50 output.jpg        
            
$conversion "$rutaImagick/convert -quality 90% $imagen";
            
$conversion "$rutaImagick/convert $conversion -scale $ancho $nombreImagen"//reducimos antes a escala
            
exec("$rutaImagick/convert $conversion -scale $medida -background $color -gravity center -extent $medida $nombreImagen");
            
Header("Content-Type: image/jpeg"); // se envia la cabecera...
            
readfile("$nombreImagen");
        }
    }
?>
Hay algunas cosas raras a la hora de convertir porque al tener tan poca memoria tengo muchos problemas con imágenes grandes, y lo estoy intentando solucionar, pero es que ahora ni si quiera puedo ver ninguna imagen por el citado error. ¿Veis algo raro?

Gracias!

En ninguno de los 3 casos me funciona, tanto si envío sólo el ancho, como si envío el alto como si envío ambas cosas. Lo intento ver desde la url del archivo pasandole por URL los parámetros deseados, el tema es que antes me funcionaba. No lo entiendo.

Olvidaba el error, que es este:
Código:
Warning: Cannot modify header information - headers already sent by (output started at /homepages/39/d296597816/htdocs/admin/uploads/redimensionador.php:1) in /homepages/39/d296597816/htdocs/admin/uploads/redimensionador.php on line 26
En la 26 o en la que esté el "header" es la línea que me marca.

Última edición por alyciashape; 17/05/2012 a las 11:12