Avatar billede fojensen Nybegynder
20. januar 2004 - 21:13 Der er 6 kommentarer og
1 løsning

resize jpg efter upload - problemer med output

Hej Eksperter !!

Jeg uploader et billede med en upload-formular til serveren. Mit script reducerer størrelsen inden den kopierer billedet til serveren.

Scriptet virker fint med hensyn til at kopiere billedet til serveren i den rigtige størrelse, men det output browseren kommer med, er billedet vis i den reducerede størrelse i stedet for det tekst-output jeg gerne ville ha' ...

her kommer først en funktion som jeg har fået fra www.xyborx.dk og tilrettet en del...

----- kode -----
function imageresizejpeg($sourcefile,$maxwidth,$maxheight,$destinationfile=false)
{
    if($img_src=@imagecreatefromjpeg($sourcefile))
    {
        $info=@getimagesize($sourcefile);
        if($info[1]>$maxheight || $info[0]>$maxwidth)
        {
            $ratio_width=$maxwidth/$info[0];
            $ratio_height=$maxheight/$info[1];
            $ratio=min($ratio_width,$ratio_height);
            $newwidth=intval($info[0]*$ratio);
            $newheight=intval($info[1]*$ratio);
            $img_dst=imagecreatetruecolor($newwidth,$newheight);
    imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $info[0], $info[1]);

            @imagejpeg($img_dst, $destinationfile);
        copy(imagejpeg($img_dst), $destinationfile);
            @imagedestroy($img_dst);
  echo "Billede gemmes som $destinationfile i størrelse $newwidth x $newheight.<BR>";

        }
        @imagedestroy($img_src);
        return true;
    }
    else
    {
        return false;
    }
}
----- /kode -----

når jeg så kalder funktionen med...

----- kode -----
    if(!imageresizejpeg($get_file,320,320,$file2)){
    echo 'Kan ikke åbne ' .$get_file. '...<BR>';
    } else {
    echo 'Billede gemt som ' .$file2. '...<BR><BR>';
    }
----- kode -----
så kommer dette billede-output.

Hvordan undgår jeg at få dette billede-output ???

mvh. Folmer
Avatar billede bigo Nybegynder
20. januar 2004 - 21:36 #1
Dvs. du får denne

echo "Billede gemmes som $destinationfile i størrelse $newwidth x $newheight.<BR>";

og derefter
echo 'Billede gemt som ' .$file2. '...<BR><BR>';
   
men hvor $file2 vises som billede istedet for f.eks. /home/images/xxx.jpg
Avatar billede fojensen Nybegynder
20. januar 2004 - 22:05 #2
Nej, der kommer kun det resize'ede billede på skærmen - ingen tekst - det er lige som scriptet stopper der...

Problemet er lidt at jeg ikke forstår har den store erfaring med disse image-funktioner, og jeg kan ikke finde ud af hvilken af funktionerne der returnerer dette output.

Er der f.eks nogen der ved hvorfor disse '@'er er foran funktionerne og hvad gør de ??? jeg har prøvet uden, og kan ikke se nogen forskel

mvh. Folmer
Avatar billede bigo Nybegynder
20. januar 2004 - 22:34 #3
@ stopper fejlmeddelelser.. Ikke altid lige optimalt.

imagejpeg laver outputtet.
så du skal nok lave noget ala $billede = imagejpeg($img_dst);
og derefter copy ($billede, $destination);
Avatar billede fojensen Nybegynder
21. januar 2004 - 07:07 #4
Beklager bigo - det afhjælper ikke at den kun kommer med billed-outputtet...
Avatar billede fojensen Nybegynder
21. januar 2004 - 17:22 #5
Jeg fandt løsningen - den uploadede fil skal kopires til serveren først - så kan funktionen ændre i den fil der ligger på serveren...

Derefter kom funktionen til at se sådan ud:
----- kode -----
function imageresizejpeg($sourcefile,$maxwidth,$maxheight,$destinationfile=false)
{
    if($img_src=@imagecreatefromjpeg($sourcefile)) {
        copy($sourcefile, $destinationfile);
        $info=@getimagesize($sourcefile);
        if($info[1]>$maxheight || $info[0]>$maxwidth) {
            $ratio_height=$maxheight/$info[1];
            $ratio_width=$maxwidth/$info[0];
            $ratio=min($ratio_width,$ratio_height);
            $newwidth=intval($info[0]*$ratio);
            $newheight=intval($info[1]*$ratio);
            $img_dst=imagecreatetruecolor($newwidth,$newheight);
            imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $info[0], $info[1]);
            @imagejpeg($img_dst, $destinationfile);
            imagedestroy($img_dst);
          echo "Billede gemmes som $destinationfile i størrelse $newwidth x $newheight.<BR>";
        }
        @imagedestroy($img_src);
        return true;
    } else {
        return false;
    }
}
----- /kode -----

Hvis nogen kender et godt (let forståeligt) sted hvor man kan læse mere forklaring på brugen af disse 'GD-lib' funktioner, så hører jeg gerne herom...

mvh. Folmer
Avatar billede bigo Nybegynder
21. januar 2004 - 17:47 #6
Avatar billede bigo Nybegynder
21. januar 2004 - 17:48 #7
Btw: Glæder mig du fik ting til at virke.
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