Avatar billede dmy Nybegynder
15. april 2009 - 09:00 Der er 13 kommentarer og
1 løsning

Hjælp til resize og thubnail på billedupload

Hej

Jeg har denne her billedupload, men jeg skal have den til at lave thubnails i en bestemt størrelse

Mine thubnails skal være 224x149 og de store billeder skal være max 600x400.

Så dvs. jeg både skal have resize og thubnails på min upload? Nogen der kan hjælpe???

Har ledt alle vegne på nettet og har fundet en masse koder, men med fejl i desværre, så kan simpelthen ikke helt finde ud af det.



min kode
_______________________________________________________________

<?php


//Indsætter indholdet af formularfelterne i databasen når man submitter
if(isset($_POST["Submit"]))
{


//henter indholdet af formularens felter
$overskrift = $_POST["overskrift"];
$maerke = $_POST["maerke"];
$aargang = $_POST["aargang"];
$model = $_POST["model"];
$farve = $_POST["farve"];
$km = $_POST["km"];
$pris = $_POST["pris"];


    if ($_FILES['billede1']) // hvis der er uploadet noget
{
    if( file_exists("pic/biler/" . $_FILES["billede1"]["name"]))
    {
        $fil_navn = substr( md5( time() ), 0, 10 ) . $_FILES["billede1"]["name"];
    }
    else
    {
        $fil_navn = $_FILES["billede1"]["name"];
    }
    move_uploaded_file( $_FILES["billede1"]["tmp_name"], "pic/biler/" . $fil_navn );
}
else // hvis der ikke er uploadet noget
{
$fil_navn = "default.jpg";
}

   
    // gem billede

mysql_query("INSERT INTO jph_biler (overskrift, maerke, aargang, model, farve, km, pris, billede1) VALUES ('".$overskrift."', '".$maerke."', '".$aargang."', '".$model."', '".$farve."', '".$km."', '".$pris."', '".$fil_navn."')")or die(mysql_error());

echo "Din salgsannonce for $overskrift, er nu oprettet";

}
?>
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="">
    <table width="400" height="205" border="0" cellpadding="" cellspacing="1">
  <tr>
           
              <td><input name="overskrift" type="text" id="overskrift" />Overskrift</td>
        </tr>
        <tr>
            <td"></td>
            <td><input type="file" name="billede1" /></td>
        </tr>
        <tr>
            <td><input name="maerke" type="text" id="maerke" />Mærke</td>
        </tr>
        <tr>
            <td><input name="aargang" type="text" id="aargang" />årgang</td>
        </tr>
        <tr>
           
            <td><input name="model" type="text" id="model" />model</td>
        </tr>
        <tr>
                 
            <td><input name="farve" type="text" id="farve" />farve</td>
        </tr>
        <tr>
            <td><input name="km" type="text" id="km" />km</td>
        </tr>
        <tr>
       
            <td><input name="pris" type="text" id="pris" />pris</td>
        </tr>
        <tr>
              <td><input type="submit" name="Submit" value="Tilføj nyt" /></td>
        </tr>
    </table>
    </form>
Avatar billede jakobdo Ekspert
15. april 2009 - 09:33 #1
Prøv at kig her:

http://www.eksperten.dk/guides/jakobdo

Jeg har lavet 2 guides.
En som indeholder en funktion til resize og en som indeholder upload/resize i en og samme løsning.
Hvis du kalder resize 2 gange, burde du kunne opnå dit ønskede resultat.
Avatar billede dmy Nybegynder
17. april 2009 - 08:25 #2
Hmm jeg har ret svært ved det her php, det er meget det at få andet kode integreret med det som jeg har i forevejen, tror ikke helt jeg har forstået syntaksen.

min billedeupload ser sådan her ud http://www.dianadesign.dk/diana_myni/billedeupload.php

på den uploader den kun et billede som man kan se, men hvis nu jeg skal have den til at uploade flere, hvordan gør jeg det?

Og kan jeg ikke på en nem måde få den til at lave en thumbnail og resize både thumbnailen og det store billede, eller skal der avanceret kode til?
Avatar billede jakobdo Ekspert
17. april 2009 - 10:02 #3
Lige efter du har kaldt move_uploaded_file(), så kan du kalde "min" resize() funktion.
Du kan kalde den med:

resize('original.jpg','original.jpg',600,400);
resize('original.jpg','thumb.jpg',224,149);
Så burde den lave 2 billeder.
Avatar billede dmy Nybegynder
18. april 2009 - 14:15 #4
Hmm Jeg ved ikke lige helt hvordan du mener?

Hvor skal de der være:
resize('original.jpg','original.jpg',600,400);
resize('original.jpg','thumb.jpg',224,149);

Kan ikke lige gennemskue hvor billederne kommer til at ligge, de skal vel ligge i hvert deres mappe?


<?php

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

   
    $news = $_POST["news"];
   
   
   
    if ($_FILES['billede1'])
{
    if( file_exists("billed/" . $_FILES["billede1"]["name"]))
    {
        $fil_navn = substr( md5( time() ), 0, 10 ) . $_FILES["billede1"]["name"];
    }
    else
    {
        $fil_navn = $_FILES["billede1"]["name"];
    }
    move_uploaded_file( $_FILES["billede1"]["tmp_name"], "billed/" . $fil_navn );
   
   

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
    { 
    $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) ); 
    switch($ext) 
    {   
            case 'jpeg':   
            case 'jpe':   
            case 'jpg':     
                $srcim = imagecreatefromjpeg( $filename );     
                break;   
            case 'gif':     
                $srcim = imagecreatefromgif( $filename );     
                break;   
            case 'png':     
            $srcim = imagecreatefrompng( $filename );     
            break;   
        default:     
            return false; 
    } 
    $ow = imagesx( $srcim ); 
    $oh = imagesy( $srcim ); 
    $wscale = $maxw / $ow; 
    $hscale = $maxh / $oh; 
    $scale = min( $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 ); 
    switch($ext) 
        {   
            case 'jpeg':   
            case 'jpe':   
            case 'jpg':     
                imagejpeg( $dstim, $newfilename, $quality );     
                break;   
            case 'gif':      imagegif( $dstim, $newfilename );     
                break; 
            case 'png':     
                $png_q = floor( abs( $quality / 10 - 9.9 ) );     
                imagepng( $dstim, $newfilename, $png_q );     
                break;   
            default:   
                return false; 
        } 
        imagedestroy( $dstim ); 
        imagedestroy( $srcim ); 
        return file_exists($newfilename);
    }

   
}

mysql_query("INSERT INTO billeder (news, billede1) VALUES ('".$news."', '".$fil_navn."')")or die(mysql_error());
    echo "Din nyhed er nu oprettet";

}
?>
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="se_billede.php">
    <table width="400" height="205" border="0" cellpadding="" cellspacing="1">
          <tr>
              <td><input name="news" type="text" id="news" /></td>
        </tr>
        <tr>
            <td><input type="file" name="billede1"></td>
        </tr>
        <tr>
            <td><input type="submit" name="Submit" value="Tilføj nyt" /></td>
        </tr>
    </table>
</form>
Avatar billede jakobdo Ekspert
19. april 2009 - 20:59 #5
Efter:

move_uploaded_file( $_FILES["billede1"]["tmp_name"], "billed/" . $fil_navn );

Skal du kalde resize() med korrekte parametre.
Avatar billede dmy Nybegynder
20. april 2009 - 09:27 #6
Det er vel det jeg har gjort, altså sat funktionen ind efter move_uploaded_file...

men forstår ikke hvordan jeg skal lave den resize om med de rigtige parametre, forstår ikke helt hvordan koden skal se ud..
Avatar billede jakobdo Ekspert
20. april 2009 - 09:59 #7
Det er sgu op ad bakke med dig Diana. :o)

Er du med på hvad koden her gør:

move_uploaded_file( $_FILES["billede1"]["tmp_name"], "billed/" . $fil_navn );

Den flytter den uploaded fil fra tmp til $billede/$filnavn.

Så det du skal gøre, er følgende:

Efter move_uploaded_file() skal du rette størrelse på original billede.
Det gør du sådan:

move_uploaded_file( $_FILES["billede1"]["tmp_name"], "billed/" . $fil_navn );
resize("billed/" . $fil_navn,"billed/" . $fil_navn,600,400);
Så skal vi oprette det lille billede:
resize("billed/" . $fil_navn,"billed/thumb_" . $fil_navn,224,149);

Du må ikke være bange for at prøve lidt selv... :o)
Avatar billede dmy Nybegynder
20. april 2009 - 17:28 #8
Ja jeg er tydeligvis ret fatsvag, for når du skriver det sådan, lyder det jo simpelt. Men jeg har prøvet alt på kryds og tværs inden jeg spørger her i forummet.


Er det her hvor de skal laves om til den neden under?

function resize( $file_name, $newfilename, $maxw, $maxh, $quality=85 )

function resize("billed/" . $fil_navn,"billed/" . $fil_navn,600,400);
Avatar billede jakobdo Ekspert
20. april 2009 - 20:19 #9
Nej, du skal faktisk kalde koden som jeg har skrevet.
Du skal så bare huske funktion function resize(....) i toppen eller lign.
Avatar billede dmy Nybegynder
22. april 2009 - 08:24 #10
smid lige et svar
Avatar billede jakobdo Ekspert
22. april 2009 - 08:52 #11
Har du fået det til at virke ?
Avatar billede dmy Nybegynder
22. april 2009 - 09:11 #12
næh hehe jeg har opgivet, tror jeg hiver fat i en lærer her på skolen...
Det er bare tit at i her i forummet er bedre end vores lærere, lidt tragisk, men det er derfor jeg spørger herinde først.
Avatar billede jakobdo Ekspert
22. april 2009 - 09:16 #13
Svaf!
Avatar billede jakobdo Ekspert
22. april 2009 - 09:27 #14
Takker for point.
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