Avatar billede nikksen Nybegynder
20. september 2006 - 21:58 Der er 10 kommentarer og
1 løsning

Thumbnail-funktion ind i et multi-upload script

Hejsa, da jeg forleden fik et multi-upload script op at køre kunne jeg godt tænke mig at få indbygget en funktion til at kopiere det originale billede til en anden mappe som en thumbnail + thumbnail-filnavnet til en database. Her er mit script:


if(!$regsubmit) {

    $datoen = date("d-m-Y");
    $ugenr = date("W");
         
    for ( $i = 0; $i < 5; $i++ ) {

    eval("\$site_body = \"".template("nikk_admin_galleri")."\";");

            }

} else {
    $targetDir = $_SERVER['DOCUMENT_ROOT']."/nikk/images/galleripics/";

    $besked = "";
    if ( !empty( $_FILES['upfile'] ) ) {
        $files = $_FILES['upfile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ ) {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) ) {
                $billede = $files['name'][$i];
                $extension = substr( $files['name'][$i], -3 );
                list( $mspart, $secpart ) = explode( ' ', microtime() );
                $filnavn = date("YmdHis").$mspart.".".$extension;
                if ( ($extension == "jpg" || $extension == "png" || $extension == "gif") && move_uploaded_file( $files['tmp_name'][$i], $targetDir . $filnavn ) ) {
                    $besked .= "$billedeurl er blevet uploadet med succes!<br>";
               
                    $xbillededato = $_REQUEST['billededato'][$i];
             
                    $xbilledested        = checkInput($billedested[$i], '', '', "javascript", false);
                    $xbillededato            = checkInput($billededato[$i], '', '', "javascript", false);
                    $xbilledetitel            = checkInput($billedetitel[$i], '', '', "javascript", false);
                    $xbilledebeskrivelse    = checkInput($billedebeskrivelse[$i], '', 'yes', "javascript", false);
                    $xbilledeuge            = checkInput($billedeuge[$i], '', '', "javascript", false);
           
                    // Indsættes i database til retning af billede
                    $db->query("INSERT INTO nikksite_billeder VALUES ('', '$xbilledested', '$xbillededato', '$filnavn', '$xbilledetitel', '$xbilledebeskrivelse', '$xbilledeuge')");
             
                    $site_body = "<font class=txt><p align=center><b>Billederne er tilføjet!</b></p></font></font>";
                   
                } else {
                    $filnavn = "";
                    $billede = "";
                }       
            }
        }
    }

    redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);
}


//////////////////////////////
Jeg var så heldig, at jeg for meget kort tid siden fik lov at "låne" et andet script der har denne funktion og som jeg synes ser ganske fornuftigt ud. Det er her:
//////////////////////////////


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<link href="../rouge.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
    background-color: #891d27;
}
-->
</style></head>

<body>
<?PHP


function skaler_jpg ($img,$w,$h) {

        $thumbnail = imagecreatetruecolor ($w, $h);
        $billede = imagecreatefromjpeg ($img);
        $billedestr = getimagesize ($img);
   
   
        imagecopyresized ($thumbnail, $billede, 0, 0, 0, 0, $w, $h, $billedestr[0], $billedestr[1]);
                imagejpeg($thumbnail, $img);
        }
   

  if (isset($_POST["submit"])){

        $mappe="../../pictures/";
        $mappe2="../../pictures/thumb/";
for($key=0; $key<count($_FILES[billedefil][name]); $key++){       
$steen= getimagesize($_FILES[billedefil][tmp_name][$key]);
if($steen[2]==2){
if ($steen[0]> $steen[1] ){
echo "billedet er bredt!";
$w=160;
$h=120;
} elseif($steen[0]< $steen[1] ) {
$w=120;
$h=160;
echo "billedet er højt!";
}elseif($steen[0]==$steen[1] ){
$w=120;
$h=120;

echo "Billedet er kvardratisk";
}
       
       
   
   
            $billedenavn = time() . $_FILES[billedefil][name][$key];
            $thumbname = "thumb_" . $billedenavn;
            copy($_FILES["billedefil"]["tmp_name"][$key], $mappe.$billedenavn);
            copy($_FILES["billedefil"]["tmp_name"][$key], $mappe2.$thumbname);
   
                    $fil_at_skalere = $mappe.$mappe2.$thumbname;
                    skaler_jpg($fil_at_skalere, $w,$h);
               
                    //indsæt i databasen
                    $navn=$_POST['name'][$key];
                    echo $navn;
                    include('../../connections/connection.php');
                    mysql_query("INSERT INTO gallery (name, thumb,stithumb,billede,stibillede)
                    VALUES('$navn','$thumbname','$mappe2.$thumbname','$billedenavn','$mappe.$billedenavn')")or die(mysql_error());


                    }else{
                    //echo "FY HA slemme dreng!!";
                    }
                    }
                    ?>
               
        <script>
        //window.location="<?php echo $PHP_SELF; ?>";
        </script>
        <?php

}else {
}
       
?>



<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="upload_form">
<span class="overskrift"><strong>Select the Picture/Pictures you want to uploade:</strong></span><br><br>
<span class="tekst">Navn:</span>
<input name="name[]" type="text" id="name3">
<input type= "file" name="billedefil[]">
<br>
<span class="tekst">Navn:</span>
<input name="name[]" type="text" id="name1">
<input type= "file" name="billedefil[]"><br>
<span class="tekst">Navn:</span>
<input name="name[]" type="text" id="name2">
<input type= "file" name="billedefil[]"><br><br>


<input type="submit" name="submit" value="Uploade">


</form>
<p>&nbsp;</p>
</body>
</html>


////////////////////////////
Og her er så den vigtige del af min upload-formular, som ligger i en template:
///////////////////////////


<tr>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billededato[]" value="$datoen" size="10" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><select size="1" name="billedested[]">
  <option value="valdisere0607">Val d'Isere 06/07</option>
  <option value="alpedhuez0405">Alpe d'Huez 04/05</option>
</select></td>
<td bgcolor="$altbg2" class="tablerow" align="center">
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
</td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedetitel[]" size="15" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><textarea rows="2" name="billedebeskrivelse[]" cols="20"></textarea></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedeuge[]" value="$ugenr" size="1" /></td>
</tr>


Jeg kan ikke gennemskue hvordan dette gøres i et multi-upload script. Hvis der er nogen der kan gøre det for mig ville jeg være glad hvis der samtidigt kunne knyttes nogle kommentarer til, så jeg også kan lære af det.

Tak!
Avatar billede coderdk Praktikant
20. september 2006 - 23:56 #1
Prøv lige at lave det øverste om til:

    function resize( $type, $filename, $newfilename, $maxw, $maxh )
    {
        switch ( $type )
        {
            case 'jpg':
                $createfile = 'imagecreatefromjpeg';
                $createnew = 'imagecreatetruecolor';
                $copy = 'imagecopyresampled';
                $save = 'imagejpeg';
                break;
            case 'png':
                $createfile = 'imagecreatefrompng';
                $createnew = 'imagecreate';
                $copy = 'imagecopy';
                $save = 'imagepng';
                break;
            case 'gif':
                $createfile = 'imagecreatefromgif';
                $createnew = 'imagecreate';
                $save = 'imagegif';
                break;
               
        }
        $srcim = $createfile( $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 = $createnew( $nw, $nh );
        $copy( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
        $save( $dstim, $newfilename );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

if(!$regsubmit) {

    $datoen = date("d-m-Y");
    $ugenr = date("W");
       
    for ( $i = 0; $i < 5; $i++ ) {

    eval("\$site_body = \"".template("nikk_admin_galleri")."\";");

            }

} else {
    $targetDir = $_SERVER['DOCUMENT_ROOT']."/nikk/images/galleripics/";

    $besked = "";
    if ( !empty( $_FILES['upfile'] ) ) {
        $files = $_FILES['upfile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ ) {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) ) {
                $billede = $files['name'][$i];
                $extension = substr( $files['name'][$i], -3 );
                list( $mspart, $secpart ) = explode( ' ', microtime() );
                $filnavn = date("YmdHis").$mspart.".".$extension;
                if ( ($extension == "jpg" || $extension == "png" || $extension == "gif") && move_uploaded_file( $files['tmp_name'][$i], $targetDir . $filnavn ) ) {
                    $thumb = $targetDir . 'thumb_' . $filnavn;
                    resize( $extension, $targetDir . $filnavn, $targetDir . 'thumb_' . $filnavn );
                   
                    $besked .= "$billedeurl er blevet uploadet med succes!<br>";
             
                    $xbillededato = $_REQUEST['billededato'][$i];
           
                    $xbilledested        = checkInput($billedested[$i], '', '', "javascript", false);
                    $xbillededato            = checkInput($billededato[$i], '', '', "javascript", false);
                    $xbilledetitel            = checkInput($billedetitel[$i], '', '', "javascript", false);
                    $xbilledebeskrivelse    = checkInput($billedebeskrivelse[$i], '', 'yes', "javascript", false);
                    $xbilledeuge            = checkInput($billedeuge[$i], '', '', "javascript", false);
         
                    // Indsættes i database til retning af billede
                    $db->query("INSERT INTO nikksite_billeder VALUES ('', '$xbilledested', '$xbillededato', '$filnavn', '$xbilledetitel', '$xbilledebeskrivelse', '$xbilledeuge')");
           
                    $site_body = "<font class=txt><p align=center><b>Billederne er tilføjet!</b></p></font></font>";
                 
                } else {
                    $filnavn = "";
                    $billede = "";
                }     
            }
        }
    }

    redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);
}
Avatar billede coderdk Praktikant
20. september 2006 - 23:57 #2
baaah, linjen:

resize( $extension, $targetDir . $filnavn, $targetDir . 'thumb_' . $filnavn );

burde have været:

resize( $extension, $targetDir . $filnavn, $targetDir . 'thumb_' . $filnavn, 150, 150 );

:-D
Avatar billede nikksen Nybegynder
21. september 2006 - 00:03 #3
hehe ok, øjeblik så prøver jeg lige...
Avatar billede nikksen Nybegynder
21. september 2006 - 00:07 #4
Fatal error: Call to undefined function: resize() in /customers/offpisteguide.dk/offpisteguide.dk/httpd.www/nikk/index.php on line 344
Avatar billede coderdk Praktikant
21. september 2006 - 00:08 #5
Øøøh, har du ikke pastet alt hvad jeg skrev ind? For resize() funktionen er der da ;)
Avatar billede nikksen Nybegynder
21. september 2006 - 00:11 #6
ahhhh... da jeg tilføjede den rettelse du kom med kom jeg til at fjerne "function"... min fejl!.. øjeblik
Avatar billede nikksen Nybegynder
21. september 2006 - 00:12 #7
Parse error: syntax error, unexpected '.', expecting ')' in /customers/offpisteguide.dk/offpisteguide.dk/httpd.www/nikk/index.php on line 344
Avatar billede nikksen Nybegynder
21. september 2006 - 00:14 #8
ej, nu er det mig der kludrer i det igen.. undskyld.. øjeblik!!
Avatar billede nikksen Nybegynder
21. september 2006 - 00:16 #9
ok, ingen fejl nu.. skulle det virke nu? skal jeg ikke oprette en mappe og tilføje et felt til db??
Avatar billede nikksen Nybegynder
21. september 2006 - 00:24 #10
det fungerer sgu, som det skal! TAK! Smid et svar :)
Avatar billede coderdk Praktikant
21. september 2006 - 02:06 #11
hehe ok :-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