Avatar billede sesam Nybegynder
19. april 2003 - 14:17 Der er 4 kommentarer og
1 løsning

function header fejl

Hej exp...
Jeg har en funktion til at lave thumbnail billeder:

<?php
function thumb($img,$mode= '0'){
if (!isset($w))
    {
    $w = 100;
    }

if (!isset($h))
    {
    $h = 100;
    }


SetType($mode,  'integer');
SetType($w,      'integer');
SetType($h,    'integer');
SetType($img,    'string' );

function percent($p, $w)
    {
    return (real)(100 * ($p / $w));
    }

function unpercent($percent, $whole)
    {
    return (real)(($percent * $whole) / 100);
    }

// Initialization

// Make sure the file exists...
if (!file_exists($img))
    {
    echo "Error: could not find file: $img.";
    exit();
    }

// If the user defined a type to use.
if (!isset($type))
    {
    $ext = explode('.', $img);
    $ext = $ext[count($ext)-1];
        switch(strtolower($ext))
            {
            case 'jpeg'  : 
                $type = 'jpg';
            break;
            default :
                $type = $ext;
            break;
            }
    }

// Create the image...
switch (strtolower($type))
    {
    case 'jpg':
        $tmp = imagecreatefromjpeg($img);   
    break;

    case 'gif':
        $tmp = @imagecreatefromgif($img);   
    break;
   
    case 'png':
        $tmp = @imagecreatefrompng($img);   
    break;
   
    default:
        echo 'Error: Unrecognized image format.';
        exit();
    break;
    }

if ($tmp)
    {
    // Resize it
   
    $ow  = imagesx ($tmp);    // Original image width
    $oh  = imagesy ($tmp);    // Original image height

    if ($mode)
        {
        // Just smash it up to fit the dimensions
        $nw = $w;
        $nh = $h;
        }
    else
        {
        // Make it proportional.
        if ($ow > $oh)
            {
            $nw  = $w;
            $nh = unpercent(percent($nw, $ow), $oh);         
            }
        else if ($oh > $ow)
            {
            $nh = $h;
            $nw = unpercent(percent($nh, $oh), $ow);
            }
        else
            {
            $nh = $h;
            $oh = $w;
            }
        }

    $out = imagecreate($nw, $nh);
    imagecopyresized($out, $tmp, 0, 0, 0, 0, $nw, $nh, $ow, $oh);
    imagedestroy($tmp);
    }
else
    {
    echo 'Could not create image resource.';
    exit;
    }


if ($out)
    {
    switch (strtolower($type))
        {
        case 'jpg':
            header('Content-type: image/jpeg');
            imagejpeg($out);
        break;

        case 'gif':
            header('Content-type: image/gif');
            imagegif($out);
        break;

        case 'png':
            header('Content-type: image/png');
            imagepng($out);
        break;
        }
    imagedestroy($out);
    }
else
    {
    echo 'ERROR: Could not create resized image.';
    }
}

thumb("images/3.jpg");
?>

Hvis jeg kalder den sådan her uden nogen som helst form for html kode virker den fint. Men hvis jeg fx.
<?
echo "Billede nr: 1";
thumb("images/3.jpg");
?>

Så for jeg denne her fejl...

billede nr: 1
Warning: Cannot add header information - headers already sent by

Hvad kan jeg gøre for at undgå dette???
Avatar billede Slettet bruger
19. april 2003 - 14:47 #1
Det er fordi du bruger funktionen
header(XXXX);
Der må ikke have været noget output (echo, print, etc.) før du kalder denne funktion!
Desuden kan jeg ikke se, hvad du skal bruge
echo "Billede nr: 1";
til... du bruger jo denne funktion til at genere et billede af den ene eller anden form!? Ikke et html dokument...
Hvis du vil have præsenteret billedet i et html dokument så gør følgende:
-------------------------------------
Billede nr: 1<br/>
<img src="thumbs.php" alt="thumb"/>
-------------------------------------
Hvor thumbs.php er stien til den fil hvor ovenstående script ligger i.
Avatar billede sesam Nybegynder
19. april 2003 - 14:53 #2
Nu prøver jeg sådan her:

test.php
<img src="thumbs.php?img=images/1.jpg" alt="thumb"/>

Men der kommer ikke noget billede frem???
Avatar billede Slettet bruger
19. april 2003 - 14:55 #3
Hvad hvis du bare skriver:
"thumbs.php?img=images/1.jpg" i adresselinien?
Avatar billede sesam Nybegynder
19. april 2003 - 14:56 #4
Sorry lille fejl nu virker det perfekt...
Avatar billede Slettet bruger
19. april 2003 - 14:57 #5
:D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester