12. december 2005 - 14:05
Der er
24 kommentarer og 1 løsning
Hjælp til THMBS.
Hej eksperter. Jeg ønsker hjælp til mit billedeupload.. Den virker fint nu, men jeg skal have den til at lave en thmb fil af billedet og ligge op sammen med det originale billede. koden ser sådan har ud: if (isset($_FILES['upfile'])) { function resize( $filename, $newfilename, $maxw, $maxh ) { $result = false; $srcim = imagecreatefromjpeg( $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 = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); $result = imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return $result; } $filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "application/x-zip-compressed", "application/octet-stream"); if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") { echo"<table width=\"450\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF8282\"> <tr> <td width=\"20\" valign=\"middle\" bgcolor=\"f4f3f3\"><img src=\"images/warning.gif\" width=\"23\" height=\"25\"></td> <td width=\"430\" valign=\"middle\" bgcolor=\"#f4f3f3\" class=\"godkendt_txt\">Billedet blev ikke lagt op</td> </tr> </table><br>"; } elseif (!in_array($_FILES['upfile']['type'], $filetyper)) { echo "<table width=\"450\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF8282\"> <tr> <td width=\"20\" valign=\"middle\" bgcolor=\"f4f3f3\"><img src=\"images/warning.gif\" width=\"23\" height=\"25\"></td> <td width=\"430\" valign=\"middle\" bgcolor=\"#f4f3f3\" class=\"godkendt_txt\">Lagde du en *.png fil op, så kig bort fra denne besked.<br> Ellers: Denne fil kan ikke oplægges</td> </tr> </table><br>"; } if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") { if(is_uploaded_file($_FILES['upfile']['tmp_name'])) { $sti = $row3['sti'] ."/"; $uldir = $sti; $ulfile = $uldir.basename($_FILES['upfile']['name']); move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile); } } } _________ Jeg har fået en function af jakobdo som skulle kunne gøre dette, jeg mangler bare så den copyer filen over på serveren og skriver thmb_ foran navnet, og så scallere den ned i en størrelse af 110x120 Håber meget i kan hjælpe !
Annonceindlæg fra Admin By Request
12. december 2005 - 14:07
#1
Efter: move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile); laver du: resize($ulfile,"thumb_".$ulfile,110,120); Dog vil funktionen kun virke på JPEG/JPG.
12. december 2005 - 14:13
#2
er det muligt også at kunne lave så den kan på gif filer?
12. december 2005 - 14:21
#3
Ja, så skal koden bare udvides! Måske dette kan gøre det: function resize( $filename, $newfilename, $maxw, $maxh ) { $result = false; $extension = end(explode(".",$filename)); $srcim = ""; switch($extension) { case "jpg": case "jpeg": $srcim = imagecreatefromjpeg( $filename ); break; case "gif": $srcim = imagecreatefromgif( $filename ); break; default: //Her skal vi helst ikke være! return false; } $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 = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); $result = false; switch($extension) { case "jpg": case "jpeg": $result = imagejpeg( $dstim, $newfilename, 85 ); break; case "gif": $result = imagegif( $dstim, $newfilename); break; default: //Her skal vi helst ikke være! return false; } imagedestroy( $dstim ); imagedestroy( $srcim ); return $result; }
12. december 2005 - 14:32
#4
gulp hehe !.. ja det er så okay :op. skal der virkelig ikke andet end resize($ulfile,"thumb_".$ulfile,110,120); til forneden? så lægger den sig selv op osv uden nogen copy function?
12. december 2005 - 14:35
#5
jep :o)
12. december 2005 - 14:35
#6
den skriver: Warning: imagegif(): Unable to open 'thumb_../images/galleri/gallerier/gal1/home.gif' for writing in når jeg prøver at loade en gif fil op :o)
12. december 2005 - 14:39
#7
Hehe! Sådan måske: $uldir = $sti; $ulfile = $uldir.basename($_FILES['upfile']['name']); $thumbFile = $uldir."thumb_".basename($_FILES['upfile']['name']); move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile); resize($ulfile,$thumbFile.$ulfile,110,120);
12. december 2005 - 14:49
#8
den siger fejl her nu: case "gif": $result = imagegif( $dstim, $newfilename); break; default: //Her skal vi helst ikke være! return false; >>>> $result = imagegif( $dstim, $newfilename); <<<< :o)
12. december 2005 - 14:49
#9
nærmere (Warning: imagegif(): Unable to open '../images/galleri/gallerier/gal1/thumb_back.gif../images/galleri/gallerier/gal1/back.gif' )
12. december 2005 - 14:59
#10
Det skal jo være: resize($ulfile,$thumbFile,110,120); og ikke: resize($ulfile,$thumbFile.$ulfile,110,120);
12. december 2005 - 14:59
#11
Jeg sidder og sover!
12. december 2005 - 15:40
#12
yes det virker.. men lige 2 ting ;)
1: Hvorfor sætter den størrelsen til 110x83 ? er det fordi den sætter en autoscallering eller noget?
2: jeg vil gerne have den skriver thumb navnet ind i min DB i stedet for det store billede navn.. hvad skal der så stå her i stedet?
$adr = $HTTP_HOST;
$adr2 = $row3['sti'];
$sti2 = str_replace("../", "", $adr2);
$upfile2 = "
http://$adr/otcms/$sti2/" . $_FILES['upfile']['name'];
12. december 2005 - 15:41
#13
rettere hvad skal der stå her: . $_FILES['upfile']['name'];
12. december 2005 - 15:44
#14
Kunne det være: basename($_FILES['upfile']['name']);
12. december 2005 - 19:28
#15
Tjek hvilken version du har af GDlib, jeg havde samme problem med at lave GIF's og det er simpelthen fordi de havde disabled funktionen til at Create'e GIFs.. Det er først kommet igen i en af de nyere versioner.. Prøv at læs det spørgsmaal jeg stilte her paa eksperten ang. det:
http://eksperten.dk/spm/658479
12. december 2005 - 21:50
#16
nizo - det er problem nr. 1 du svare på eller?
12. december 2005 - 22:19
#17
1: Den laver en scalering ja! 2: Burde være: basename($_FILES['upfile']['name']);
13. december 2005 - 09:46
#18
kan den ikke laves transperant et billede ? altså, hvis jeg loader et billede op som i forvejen har en transperant baggrund, kan den så ikke stadig være transperant når den bliver lavet til en thumb?
13. december 2005 - 09:57
#19
Jo, du kan godt lave transparent billeder, du skal kigge på: imagecolortransparent()
13. december 2005 - 10:01
#20
den skal under her: $dstim = imagecreatetruecolor( $nw, $nh ); og hedde $trans_color = imagecolorallocate($dstim, 255, 0, 0); imagecolortransparent($dstim, $trans_color); vil du ikke sige det er meget rigtigt eller misforstår jeg noget?
13. december 2005 - 10:05
#21
Jeg har ikke rodet så meget med det, så må være dig svar skyldig!
13. december 2005 - 10:15
#22
det virkede da vist nogenlunde hehe.. men det er jo heller ikke billeder der er transperante der skal lægges op, så jeg lader det være med det som det der.. Smider du et svar, jeg har vist fået alt til at virke som det skal :D
13. december 2005 - 10:20
#23
Det er jo smukt! Og et svar! :o)
13. december 2005 - 10:30
#24
takker :oD -lukket-
13. december 2005 - 10:31
#25
Takker for point!
Vi tilbyder markedets bedste kurser inden for webudvikling