Avatar billede KurtG Forsker
23. december 2019 - 11:13 Der er 3 kommentarer og
1 løsning

Fejl ved gemning af png-fil

Jeg danner vha. php et png-billede, som jeg derefter enten får vist eller gemmer på serveren.
Billedet (en farveskala) vises OK, emn vil jeg i stedet gemme det påserveren, kommer der en fejl på skærmen og programmet går i stå.

Start-  og slutværdierne er defineret tidligere i programmet.
Programmet er:
    $F_Red = $StartRed;
    $F_Green = $StartGreen;
    $F_Blue = $StartBlue;
    $DifRed = ($EndRed - $StartRed)/$Hojde;
    $DifGreen = ($EndGreen - $StartGreen)/$Hojde;
    $DifBlue = ($EndBlue - $StartBlue)/$Hojde;

    header('Content-type: image/png');
      $png_image = imagecreate($Bredde, $Hojde);
    imagecolorallocate($png_image, 15, 142, 210);
    $black = imagecolorallocate($png_image, 0, 0, 0);

    for ($y = 0; $y <= $Hojde; $y++)
    {
        $bl = imagecolorallocate($png_image, $F_Red, $F_Green, $F_Blue);
        imageline($png_image, 0, $y, $Bredde, $y, $bl);
        $F_Red = $F_Red + $DifRed;
        $F_Green = $F_Green + $DifGreen;
        $F_Blue = $F_Blue + $DifBlue;
    }

    imagepng($png_image,"Colorscale.png",0);
//    imagepng($png_image);
    imagedestroy($png_image);
Fejlmeldingen (der ikke kan kopieres fra skærmen) er:
Billedet "http://StiTilBilledet/ColorScale.php" kan ikke vises, da det inderholder fejl.
Det skal dog siges, at filen "ColorScale.png" er dannet på serveren, og er OK.

Nogen, der har en ide om, hvad jeg gør galt?
Jeg vil gerne have programmet til at fortsætte, så jeg kan download filen.

Programmet kan prøves på "http://www.kg2.dk/ColorScale/ColorScale.php"
Avatar billede erikjacobsen Ekspert
23. december 2019 - 12:48 #1
I ovenstående sker der to ting: 

1) Du danner billedet  Colorscale.png
2) Og din browser viser hvad dit PHP-script returnerer

I punkt 2 har du sagt det skal være et billede:

  header('Content-type: image/png');

men det der kommer tilbage til browseren er ikke et billede - det er formentlig tomt.

Hvad skal der ske i browseren når du har lagt billedet på serveren med navnet Colorscale.png?
Avatar billede KurtG Forsker
23. december 2019 - 13:54 #2
Det, der kommer tilbage til browseren ER et billede, når jeg har valgt at få vist billedet.
Jeg starter med at bede om input til farveskalaen, se http://www.kg2.dk/ColorScale/ColorScale.php
Når der trykkes på 'Generer Farveskalaen' dannes billedet og vises på skærmen, hvis det er valgt.
Jeg formodede, at programmet efter at have vist billedet i et kort øjeblik, fortsatte videre, og igen viste startbilledet med valg af parametre, da al generering af billedet ligger først i programmet.

Når jeg vælger at gemme billedet i en fil, forventede jeg at filen bliver dannet og derefter igen viste startbilledet med valg af parametre. Men i stedet kommer ovennævnte fejlmelding.

Jeg har i mellemtiden i stedet for at udkommentere linierne
//    imagepng($png_image);
    imagepng($png_image,"Colorscale.png",0);
lavet en if-sætning.

Se programlistningen på http://www.kg2.dk/ColorScale/ListningColorScale.php
og programmet på http://www.kg2.dk/ColorScale/ColorScale.php
Avatar billede erikjacobsen Ekspert
23. december 2019 - 14:14 #3
Men du har stadigvæk

  header('Content-type: image/png');

så browseren forventer et billede, hvilket det ikke er.
Avatar billede KurtG Forsker
23. december 2019 - 20:07 #4
Du har ret, men nu har jeg tilføjet
    header('Content-Type: text/html; charset=iso-8859-1');
efter ar filen er lukket, og så kommer der ikke nogen fejlmelding, når filen gemmes.

Så lærte jeg også det.
Tak for hjælpen.
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