Avatar billede hoppe11 Nybegynder
11. juli 2009 - 17:53 Der er 3 kommentarer og
1 løsning

png i GDlib

når der går en png fil i scriptet meldes fejl:

"Billedet "xxx.png" kan ikke vises, da det indeholder fejl."

    if($row['id'] == 1) $src_img = imagecreatefromjpeg($image);
    elseif($row['id'] == 2) $src_img = imagecreatefromgif($image);
    elseif($row['id'] == 3) $src_img = imagecreatefrompng($image);
   
    $src_width = imagesx($src_img);
    $src_height = imagesy($src_img);
   
    if($scale == -1)
    {
        $dst_width = $src_width;
        $dst_height = $src_height;
    }
    else
    {
        $scale = $src_height / $height;
        $dst_width = $src_width / $scale;
        $dst_height = $src_height / $scale;
       
        if($width < $dst_width)
        {
            $scale = $dst_width / $width;
            $dst_width = $dst_width / $scale;
            $dst_height = $dst_height / $scale;
        }
    }
   
    $dst_img = imagecreatetruecolor($dst_width, $dst_height);
    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
   
    if($row['id'] == 1) imagejpeg($dst_img, '', $quality);
    elseif($row['id'] == 2) imagegif($dst_img, '', $quality);
    elseif($row['id'] == 3) imagepng($dst_img, '', $quality);
   
    imagedestroy($src_img);
    imagedestroy($dst_img);
Avatar billede hoppe11 Nybegynder
11. juli 2009 - 17:57 #1
må heller lige få lidt mere med :)

hvis jeg vælger at sætte $omit_gd og gå udenom GDlib meldes ingen fejl og billedet vises

if($omit_gd) echo file_get_contents($image);
else
{
    if($row['id'] == 1) $src_img = imagecreatefromjpeg($image);
    elseif($row['id'] == 2) $src_img = imagecreatefromgif($image);
    elseif($row['id'] == 3) $src_img = imagecreatefrompng($image);
   
    $src_width = imagesx($src_img);
    $src_height = imagesy($src_img);
   
    if($scale == -1)
    {
        $dst_width = $src_width;
        $dst_height = $src_height;
    }
    else
    {
        $scale = $src_height / $height;
        $dst_width = $src_width / $scale;
        $dst_height = $src_height / $scale;
       
        if($width < $dst_width)
        {
            $scale = $dst_width / $width;
            $dst_width = $dst_width / $scale;
            $dst_height = $dst_height / $scale;
        }
    }
   
    $dst_img = imagecreatetruecolor($dst_width, $dst_height);
    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
   
    if($row['id'] == 1) imagejpeg($dst_img, '', $quality);
    elseif($row['id'] == 2) imagegif($dst_img, '', $quality);
    elseif($row['id'] == 3) imagepng($dst_img, '', $quality);
   
    imagedestroy($src_img);
    imagedestroy($dst_img);
}
Avatar billede Slettet bruger
11. juli 2009 - 18:33 #2
Kan det være fordi du mangler at sætte header?

header("Content-type: image/png");
Avatar billede hoppe11 Nybegynder
11. juli 2009 - 22:53 #3
header er også i orden :)

fordi når jeg udskriver filen med file_get_contents() er der ingen fejl :-/
Avatar billede hoppe11 Nybegynder
14. juli 2009 - 20:40 #4
lukker
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