Jeg har lavet et upload system men mangler nogle småfunktioner for det bliver helt perfekt. Jeg kunne godt tænke mig, at der bliver lavet en thumbnail som bliver gemt et sted og at selve det originale billede bliver skaleret ned inden det bliver uploadet. Hvordan gør jeg det?
Du kan ikke nedskalere et billede før upload, men når det er uploadet kan du bruge denne funktion til at, i dette eksempel, skalere ned ift. en maximum bredde:
$sourcefile = '(evt. sti/)navn på dit billede' $targetfile = '(evt. sti/)navn på dit nedskalerede billede' (evt. samme som billede, hvis det skal overskrives). Se mine eksempler forneden i mit oprindelige indlæg.
Herunder er koden som jeg bruger til at uploade billeder med. Hvad skal jeg præcis tilføje til koden for billeder bliver resizet hvis de er for store og så gemt?
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><? $userfile_name = str_replace("#", "", $userfile_name); ini_set("safe_mode", "0"); //Laver et resultat af users $result = mysql_query("SELECT * FROM users WHERE ID = '$row_login[ID]'"); //Kør løkke så længe der er rækker i databasen while($row = mysql_fetch_array($result)){ //Tjekker om variablerne er sat if (!$BilledeNavn || !$Beskrivelse || !$userfile){ //Hvis ikke bliver der udskrevet fejlbeskeder if (!$userfile){ echo "<font face='verdana' size='1'>Husk at vælge et billede.</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; } if (!$BilledeNavn){ echo "<font face='verdana' size='1'>Husk at give billedet et navn inden du uploader det.</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; } if (!$Beskrivelse){ echo "<font face='verdana' size='1'>Husk at lave en beskrivelse til billedet inden du uploader det.</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; } echo "<input type='button' name='button' value='Tilbage' onClick='window.history.back(1)' style=\"font-size:10;border:1px solid #000000;background:#C1CCD9;cursor:hand\" onMouseover=\"change('#9DABBC')\" onMouseout=\"change('#C1CCD9')\">"; }else{ //Tjek billede-størrelsen som maks må være 150 kb if ($userfile_size < 150000){ //Tjek om billede-formatet er jpg if ($userfile_type == "image/pjpeg"){ $billedenr = "1"; if (!file_exists($_SERVER['DOCUMENT_ROOT']."/images/casemod/".$row['ID'])){ //Opretter en mappe til brugerens billeder mkdir ($_SERVER['DOCUMENT_ROOT']."/images/casemod/".$row['ID'], 0777); } //Tjek om der allerede er uploadet en fil med det navn og kom med en fejlbesked hvis det er tilfældet if (!file_exists($_SERVER['DOCUMENT_ROOT']."/images/casemod/".$row['ID']."/".$userfile_name)){ //Kopier filen som er valgt af brugeren til en mappe med brugerens ID nr som navn copy ($userfile, "$DOCUMENT_ROOT/images/casemod/".$row['ID']."/".$userfile_name); //Indsæt et felt i databasen med oplysningerne om billedet som lige er lagt op mysql_query("INSERT INTO casemod (BrugerID, BilledeFil, BilledeNavn, Beskrivelse, OpretTidspunkt) VALUES ('$row[ID]', '$userfile_name', '$BilledeNavn', '$Beskrivelse', '$Tidspunktmedmere')"); echo "<center><font face='verdana' size='1'>Det valgte billede bliver nu uploadet!<br><br></font><img src='images/working.gif' width='170' height='20'></center>"; ?> </font> <script> setTimeout("window.location.href='index.php?menuid=0&pageid=12&ID=<?=$row_login[ID]?>'", 5000) </script> <? }else{ echo "<font face='verdana' size='1'>Du har allerede uploadet et billede med filnavnet \"$userfile_name\"!<br><br>Tjek om du allerede har uploadet et billede der er identisk med det du forsøger at uploade nu.<br><br>Hvis dette ikke er tilfældet kan du bare omdøbe den lokale fil til noget andet end \"$userfile_name\" og uploade den igen. Billedet skal selvfølgelig stadig være i jpg format.</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; echo "<br><input type='button' name='button' value='Tilbage' onClick='window.history.back(1)' style=\"font-size:10;border:1px solid #000000;background:#C1CCD9;cursor:hand\" onMouseover=\"change('#9DABBC')\" onMouseout=\"change('#C1CCD9')\">"; } }else{ echo "<font face='verdana' size='1'>Forkert filtype! Kun jpg filer!</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; echo "<input type='button' name='button' value='Tilbage' onClick='window.history.back(1)' style=\"font-size:10;border:1px solid #000000;background:#C1CCD9;cursor:hand\" onMouseover=\"change('#9DABBC')\" onMouseout=\"change('#C1CCD9')\">"; } }else{ echo "<font face='verdana' size='1'>Filstørrelsen overgår 150 KB!</font><br><img src='images/en_pixel_transparent.gif' width='100%' height='4'>"; echo "<input type='button' name='button' value='Tilbage' onClick='window.history.back(1)' style=\"font-size:10;border:1px solid #000000;background:#C1CCD9;cursor:hand\" onMouseover=\"change('#9DABBC')\" onMouseout=\"change('#C1CCD9')\">"; } } } ?> </td> </tr> </table>
Ok, det kan jeg ikke umiddelbart overskue. Med den funktion jeg har lavet kan du enten resize et billede eller lave en thumbnail. Det skulle være til at forstå hvordan du kalder funktionen, ellers må du spørge. Jeg vil tro at ovenstående script skal omstruktureres lidt, før du kan gøre brug af funktionen.
Hej jhonnydrud. Jeg har brugt eksemplet "02/03-2004 11:27:27", og kunne heller ikke få det til at virke. Jeg fik de samme fejlmeddelelser. Men fandt ud af, at jeg ikke havde installeret GD i PHP, på min local-server. Hordan man gør det kan du se "www.webdesign101.dk/artikler/php_install.php". Hvis du har installeret GD, har jeg læst at den nye version i GD ikke understøtter *.gif filer. God fornøjelse jakob-s
Synes godt om
Ny brugerNybegynder
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.