Avatar billede s0mmer Nybegynder
05. september 2006 - 22:58 Der er 12 kommentarer og
1 løsning

Fejl i resize script

Hejsa, efter at have lavet mit upload system om skal jeg have integreret et resize system. Jeg har indsat det, men det virker ikke rigtig. Kan i se hva der ska ændres?

//Upload
function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $srcim = imagecreatefromjpeg( $filename );
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $wscale = $maxw / $ow;
        $hscale = $maxh / $oh;
        $scale = ( $hscale < $wscale ? $hscale : $wscale );
        $nw = round( $ow * $scale, 0 );
        $nh = round( $oh * $scale, 0 );
        $dstim = imagecreatetruecolor( $nw, $nh );
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
        imagejpeg( $dstim, $newfilename, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 40);
                   
                    // Gem billede
                    ImageJPEG($pic1, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    resize( $filnavn, $filnavn, 600, 450 );
                    echo "Billedet blev gemt.<br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    } else {
Avatar billede Slettet bruger
05. september 2006 - 23:54 #1
Den melder ingen fejl eller?
men der mangler da noget i slutningen af filen } else { ...?
else hvad??
Avatar billede coderdk Praktikant
06. september 2006 - 00:39 #2
Bare slet funktionen, og lav det sammen med den anden kode:

if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                 
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                 
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                 
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 40);
                 
                 
                    $wscale = $maxw / $sizeX;
                    $hscale = $maxh / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
                 
                    // Gem billede
                    imagejpeg( $dstim, "fotos/".$_POST["select"]."/".$filnavn, 100 );

                    //ImageJPEG($pic1, "fotos/".$_POST["select"]."/".$filnavn, 100);
                 
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    ImageDestroy($dstim);
                    unlink($gemfil);
                 
                    resize( $filnavn, $filnavn, 600, 450 );
                    echo "Billedet blev gemt.<br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
                    echo "<script language='Javascript'>
                    alert ('Billedet er uploadet!')
                    </script>";
                    echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    } else {

Den sidste else der er også lidt suspekt ;)
Avatar billede coderdk Praktikant
06. september 2006 - 00:40 #3
Hov, glemte at slette linjen:

    resize( $filnavn, $filnavn, 600, 450 );
Avatar billede Slettet bruger
06. september 2006 - 02:07 #4
:D ^^
Avatar billede s0mmer Nybegynder
06. september 2006 - 08:47 #5
Ingen fejl, men filen bliver ikke uploadet, så kan heller ikke tjekke om den resizer
Avatar billede s0mmer Nybegynder
06. september 2006 - 09:22 #6
.. og mens jeg ligger kigger på det, mangler vi ikke et sted hvor vi angiver størrelsen på billedet? (resize( $filnavn, $filnavn, 600, 450 );) ?
Avatar billede s0mmer Nybegynder
06. september 2006 - 09:23 #7
nu har jeg det således: filen blir uploadet, men ikke resized! tjek evt. mit forrige indlæg:::

//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 40);
                   
                    $wscale = $maxw / $sizeX;
                    $hscale = $maxh / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

                    // Gem billede
                    ImageJPEG($pic1, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "Billedet blev gemt.<br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    } else {
Avatar billede coderdk Praktikant
06. september 2006 - 09:29 #8
Ah ja, linjerne:
             
                    $wscale = $maxw / $sizeX;
                    $hscale = $maxh / $sizeY;

skal være:
             
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
Avatar billede s0mmer Nybegynder
06. september 2006 - 16:46 #9
Er ændret:(du får lige fulde kode for en sikkerheds skyld) og den resizer stadig ik

//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100);
                   
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

                    // Gem billede
                    ImageJPEG($pic1, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "Billedet blev gemt.<br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    } else {
Avatar billede coderdk Praktikant
06. september 2006 - 20:04 #10
Linjen

ImageJPEG($pic1, "fotos/".$_POST["select"]."/".$filnavn, 100);

skal være:

ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100);
Avatar billede s0mmer Nybegynder
06. september 2006 - 20:39 #11
altså nu er det rigtig str.(resized har virket) men billedet er helt sort?
Avatar billede coderdk Praktikant
06. september 2006 - 21:30 #12
Jeg er stiv:

imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

skal nok være:

imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY );
Avatar billede s0mmer Nybegynder
06. september 2006 - 21:51 #13
perfekt - du får points.
du har forresten hjulpet mig meget, måske du kunne hjælpe med http://www.eksperten.dk/spm/730762 også ?
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