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>
Annonceindlæg fra Barco
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.
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?
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.
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>
19. april 2009 - 20:59
#5
Efter: move_uploaded_file( $_FILES["billede1"]["tmp_name"], "billed/" . $fil_navn ); Skal du kalde resize() med korrekte parametre.
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..
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)
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);
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.
22. april 2009 - 08:24
#10
smid lige et svar
22. april 2009 - 08:52
#11
Har du fået det til at virke ?
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.
22. april 2009 - 09:16
#13
Svaf!
22. april 2009 - 09:27
#14
Takker for point.
Vi tilbyder markedets bedste kurser inden for webudvikling