16. november 2009 - 15:26Der er
7 kommentarer og 1 løsning
Resize billeder (igen)
Jeg har med stor interesse gennempløjet "Eksperten" for af læse om dette emne, og det er da heller ikke fordi der mangler indlæg om det.
Men jeg kan ikke rigtigt finde lige det der passer på det jeg skal bruge.
Jeg har et script til opload af billeder, det virker fint, (er iøvrigt også oprindeligt her fra sitet)men jeg kunne mægtig godt tænke mig og får bygget en resize funktion ind, jeg har ikke brug for at der laves thump, alle billeder skal bare resizes til f.eks. 800px bred.
Jeg har prøvet flere gange, og i heldigste fald skedet der bare ikke en sk... og i værste en eventyrlig masse fejlmeddeleser.
Er der nogen der tror de kan og vil hjælpe lidt med det?
Behørligt belært fra tidligere sp. dumper jeg ikke min oploadkode før nogen ber om det :-)
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
/** * @param <string>tmpPath Filename of the original image * @param <string>thumbPath Filename to save our thumbnail (e.g. /var/www/thumbnails/<name>.jpg) * @param <int>thumbWidth Thumbnail width in pixels * * @return <bool> True if success, false if not **/ function createThumbs($tmpPath, $thumbPath, $thumbWidth=800) { if (!file_exists($tmpPath)) return false;
Prøv og se min opload kode, der er et sted hvor der tjekkes filstørrelse, hvis alle billeder der oploades bliver resizeset, så bliver det vel overfødigt, og så skal dit script flettes ind der ?? og hvordan!!
//Her skrives stien til mappen hvor oploadede filer skal lande. // '.$mappe.'/' skal blive, ret kun det før. $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'.$mappe.'/';
//Antal filer der kan uploades pr. gang. $num_files = 6;
//Filtype der kan uploades: Du kan anvende alle typer, //men det er smart at undlade exe. Og hvis du vil være sikker //så skriv filtype to gange, både med "små" og "STORT". $limitedext = array('.jpg','.JPG','.jpeg','.JPEG');
//Kontrollerer om bibloteket findes eller ej. if (!is_dir("$upload_dir")) { die ("Error: Mappen <b>($upload_dir)</b> findes ikke!"); }
//check om bbiblotekket er skrivebart. if (!is_writeable("$upload_dir")) { die ("Error: Mappen <b>($upload_dir)</b> ikke skrivebar."); }
//Hvis der trykkes på send (submit) starter upload if (isset($_POST['upload_form'])) { echo "<h3>Upload resultat:</h3>";
//Laver et loop for at uploade filer baseret på ($num_files) number of files. for ($i = 1; $i <= $num_files; $i++) { //definerer variabler til values. $new_file = $_FILES['file'.$i]; $file_name = $new_file['name'];
//Ved mellemrum i fil navne erstattes disse med "_". $file_name = str_replace(' ', '_', $file_name); $file_tmp = $new_file['tmp_name']; $file_size = $new_file['size'];
#-----------------------------------------------------------# # Denne koder tjekker om der er valgt en fil eller ej. # #-----------------------------------------------------------#
if (!is_uploaded_file($file_tmp)) { //print error meddelsser og fil nummer. echo "Filen $i: er ikke valgt.<br>"; } else { #-----------------------------------------------------------# # Denne kode tjekker filens endenavn # #-----------------------------------------------------------#
//Hvis du valgte ændre fil endelser, så husk at rette teksten //i denne medelsesblok $ext = strrchr($file_name,'.'); if (!in_array(strtolower($ext),$limitedext)) { echo "Filen $i: ($file_name) har forkert endenavn.<br>Du kan kun sende jpg.<br>"; } else { #-----------------------------------------------------------# # Denne kode kontrolle filstørrelsen # #-----------------------------------------------------------#
if ($file_size > $size_bytes) { echo "Filen $i: ($file_name) blev ikke sendt. Filen skal være under <b>". $size_bytes / 1024/1024 ."</b> MB. <br>"; } else { #-----------------------------------------------------------# # Denne kode tjekker om filenavnet findes i forvejen. # #-----------------------------------------------------------#
if (file_exists($upload_dir.$file_name)) { echo "Filen $i: ($file_name) findes allerede.<br>"; } else { #-----------------------------------------------------------# # Er alt ok går scriptet igang. # #-----------------------------------------------------------#
if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) { echo "Filen $i: ($file_name) er sendt.<br><br>"; } else { echo "Filen $i: kunne ikke sendes.<br>"; } #Slut på (move_uploaded_file). } #Slut på (file_exists). } #Slut på (file_size). } #Slut på (limitedext). } #eSlut på (!is_uploaded_file). } #Slut på (for loop).
# print Tilbage knap. echo "";
//////////////////////////////////////////////////////////////////////////////// //Hvis formen ikke sendte så vis hvorfor. } else { //Bare en overskrift der viser max filstørrelse der kan sendes. echo " <h3>Vælg filen der skal oploades.</h3> Max fil størrelse = ". $size_bytes / 1024/1024 ." MB. Og kun jpg format";
//Og her er selve formulaen der ses på siden. echo " <form method=\"post\" action=\"admin.php?side=nyefoto\" enctype=\"multipart/form-data\">";
// Viser hvad der blev oploadet baseret på($num_files). for ($i = 1; $i <= $num_files; $i++) { echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>"; } // Laver en selectbox hvor man kan vælge hvilken mappe billederne skal gemmes. echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\"> <br>Vælg mappe hvor billeder skal gemmes.<br><br> <select size=\"1\" name=\"mappe\">";
//Dette er stien til de mapper der skal vises. Den starter fra //"roden" og så skriver du selv de mapper den skal igennem derfra, //de mapper der ligger i sidst nævnte mappe listes op. $up_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'; chdir( "$up_dir" ); $rep = opendir('.'); while (false != ($file = readdir($rep))) //Hvis der er mapper der ikke skal med på listen navngives de her, //Hvis alle skal med udkommenteres den næste linie og "//" fjernes fra linien under. if (is_dir($file) && $file != "." && $file != "..") //if (is_dir($file)) { echo"<option>$file</option>"; } echo"</select> <input type=\"submit\" name=\"upload_form\" value=\"Send!\"> </form>"; }
Okay! Har du et bud på hvordan jeg koger de to koder sammen, det er her det hidtil er gået glat for mig, alle mine tidligere forsøg er mislykkedes. Please! :-)
Jeg er sikkert dummere end andre folks børn, nu har jeg prøvet og følge dine forslag. Scriptet oploader, men resizer ikke og den melder fejl i 3 linier (udkommenteret fejlmeddelse står over linien)
//Warning: imagecopyresampled(): supplied argument is not a valid Image resource imagecopyresampled($imgThumb, $imgOrig, 0, 0, 0, 0, $newWidth, $newHeight, $curWidth, $curHeight);
//Warning: imagejpeg(): supplied argument is not a valid Image resource imagejpeg($imgThumb, $thumbPath); unset($imgThumb); unset($imgOrig); return true; }
//Her beder scriptet om at få navnet på mappen hvor filen skal gemmes. //RET IKKE!!! SCRIPTET HENTER SELV OPLYSNINGEN FRA FOREGÅENDE FORMULAR. $mappe = $_REQUEST["mappe"]; $fil = $_REQUEST["nyt_navn"];
//Her skrives stien til mappen hvor oploadede filer skal lande. // '.$mappe.'/' skal blive, ret kun det før. $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'.$mappe.'/';
//Antal filer der kan uploades pr. gang. $num_files = 2;
//Filtype der kan uploades: Du kan anvende alle typer, //men det er smart at undlade exe. Og hvis du vil være sikker //så skriv filtype to gange, både med "små" og "STORT". $limitedext = array('.jpg','.JPG','.jpeg','.JPEG');
//Kontrollerer om bibloteket findes eller ej. if (!is_dir("$upload_dir")) { die ("Error: Mappen <b>($upload_dir)</b> findes ikke!"); }
//check om bbiblotekket er skrivebart. if (!is_writeable("$upload_dir")) { die ("Error: Mappen <b>($upload_dir)</b> ikke skrivebar."); }
//Hvis der trykkes på send (submit) starter upload if (isset($_POST['upload_form'])) { echo "<h3>Upload resultat:</h3>";
//Laver et loop for at uploade filer baseret på ($num_files) number of files. for ($i = 1; $i <= $num_files; $i++) { //definerer variabler til values. $new_file = $_FILES['file'.$i]; $file_name = $new_file['name'];
//Ved mellemrum i fil navne erstattes disse med "_". $file_name = str_replace(' ', '_', $file_name); $file_tmp = $new_file['tmp_name']; $file_size = $new_file['size'];
#-----------------------------------------------------------# # Denne koder tjekker om der er valgt en fil eller ej. # #-----------------------------------------------------------#
if (!is_uploaded_file($file_tmp)) { //print error meddelsser og fil nummer. echo "Filen $i: er ikke valgt.<br>"; } else { #-----------------------------------------------------------# # Denne kode tjekker filens endenavn # #-----------------------------------------------------------#
//Hvis du valgte ændre fil endelser, så husk at rette teksten //i denne medelsesblok $ext = strrchr($file_name,'.'); if (!in_array(strtolower($ext),$limitedext)) { echo "Filen $i: ($file_name) har forkert endenavn.<br>Du kan kun sende jpg.<br>"; } else { #-----------------------------------------------------------# # Denne kode kontrolle filstørrelsen # #-----------------------------------------------------------#
if ($file_size > $size_bytes) { echo "Filen $i: ($file_name) blev ikke sendt. Filen skal være under <b>". $size_bytes / 1024/1024 ."</b> MB. <br>"; } else { #-----------------------------------------------------------# # Denne kode tjekker om filenavnet findes i forvejen. # #-----------------------------------------------------------#
if (file_exists($upload_dir.$file_name)) { echo "Filen $i: ($file_name) findes allerede.<br>"; } else { #-----------------------------------------------------------# # Er alt ok går scriptet igang. # #-----------------------------------------------------------#
// if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) { //test $info = pathinfo($file_tmp);$fileName = basename($file_tmp,'.'.$info['extension']); if (createThumb($file_tmp, $upload_dir.$fileName."_thumb.jpg") && move_uploaded_file($file_tmp, $upload_dir.$file_name)) { //test echo "Filen $i: ($file_name) er sendt.<br><br>"; } else { echo "Filen $i: kunne ikke sendes.<br>"; } #Slut på (move_uploaded_file). } #Slut på (file_exists). } #Slut på (file_size). } #Slut på (limitedext). } #eSlut på (!is_uploaded_file). } #Slut på (for loop).
# print Tilbage knap. echo "";
//////////////////////////////////////////////////////////////////////////////// //Hvis formen ikke sendte så vis hvorfor. } else { //Bare en overskrift der viser max filstørrelse der kan sendes. echo " <h3>Vælg filen der skal oploades.</h3> Max fil størrelse = ". $size_bytes / 1024/1024 ." MB. Og kun jpg format";
//Og her er selve formulaen der ses på siden. echo " <form method=\"post\" action=\"admin.php?side=nyefoto\" enctype=\"multipart/form-data\">";
// Viser hvad der blev oploadet baseret på($num_files). for ($i = 1; $i <= $num_files; $i++) { echo "File $i: <input type=\"file\" name=\"file". $i ."\"><br>"; } // Laver en selectbox hvor man kan vælge hvilken mappe billederne skal gemmes. echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size_bytes\"> <br>Vælg mappe hvor billeder skal gemmes.<br><br> <select size=\"1\" name=\"mappe\">";
//Dette er stien til de mapper der skal vises. Den starter fra //"roden" og så skriver du selv de mapper den skal igennem derfra, //de mapper der ligger i sidst nævnte mappe listes op. $up_dir = $_SERVER['DOCUMENT_ROOT'] . '/images/billeder/'; chdir( "$up_dir" ); $rep = opendir('.'); while (false != ($file = readdir($rep))) //Hvis der er mapper der ikke skal med på listen navngives de her, //Hvis alle skal med udkommenteres den næste linie og "//" fjernes fra linien under. if (is_dir($file) && $file != "." && $file != "..") //if (is_dir($file)) { echo"<option>$file</option>"; } echo"</select> <input type=\"submit\" name=\"upload_form\" value=\"Send!\"> </form>"; }
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.