24. maj 2006 - 18:31
Der er
19 kommentarer
Hjælp til: Upload billede + reseize til mysql
Hej, Jeg har lavet et site, hvor jeg kan uploade billeder, men vil gerne have at billederne ikke er så store, så sider hurtigere loader. Jeg bruger mysql til at gemme billeder i, og vil gerne have at når man uploader et billede, bliver der lavet en thumb samtidigt med.. Jeg har kigget på denne funktion.. men kan ikke få den til at virke.. på forhånd mange tak for hjælpen.. <?php // filen image er fra fil uploaderen.. $filename = 'image'; $percent = 0.5; // Content type header('Content-type: image/jpeg'); // Get new dimensions list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent; // Resample $image_p = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // Output imagejpeg($image_p, null, 100); ?>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
<ole> Det er fornuftigt at tænke på performance - men så er det jo ikke så smart at gemme billederne i en DB. Hvorfor ikke bare gemme dem som filer og så gemme navnene i DB'en? Det giver langt bedre performance ... både for dig og evt. andre på hotellet ;o) /mvh </bole>
Hej, Jeg ved godt at det kræver flere resourcer .. men vil gerne have alle tingene samlet et sted.. sådan at jeg nemmere kan lave en backup af det hele.. Jeg skal ikke bruge så mange billeder.. så synes at det er nemmest at bruge databasen til det hele.. har du et bud på et script ?
Hey... Jeg sidder faktisk med fuldstændigt det samme problem netop nu :-) Jeg kan ikke hjælpe dig, da jeg også er på bar bund... men jeg er med på en lytter !!!
det lyder godt.. har brugt 3 dage på at finde en løsning.. og det er ikke lykkedes endnu .. så giver op og spørger om hjælp : )
Jeg sidder dog kun på 2. dagen og leder... jeg kan lige smide en kommentar herinde til dig, hvis jeg får svar på mit spørgsmål
hej -- desværre det er kun upload funktionen.. jeg skal bare bruge resize funktionen når man skal uploade til en mysql database..
hæ hæ... troede du var ude efter upload funktionen også... :-) Vil det sige, at du har et script der kan uploade billeder til en sql database???
yeps.. du laver bare en alm. form med enctype multi + data og så tilføjer du før sql script $file = fopen($_FILES['image']['tmp_name'], "r"); $image = addslashes(fread($file, filesize($_FILES['image']['tmp_name']))); forudsat at du har givet dit upload modul name="image"
... har du mulighed for at smide hele scriptet? Nu ender det jo med at du hjælper mig, og ikke selv får hjælp :-) Det kunne være jeg skulle give dig point :-)
så skidt da.. <? mysql_connect("host", "bruger", "pass"); mysql_select_db("database"); // eller include config.php ?> <form action="" method="post" enctype="multipart/form-data" name=""> <b>Titel </b><input type="text" name="title1"> <p> <b>Tekst</b><br> <textarea name="text1" cols="50" rows="30"></textarea> <p> <input type="file" name="image"> <input type="submit" name="upload" value="upload"> <p> </p> </form> <? if(isset($_POST['upload'])){ mysql_connect("localhost", "root", ""); mysql_select_db("site"); $file = fopen($_FILES['image']['tmp_name'], "r"); $image = addslashes(fread($file, filesize($_FILES['image']['tmp_name']))); $text = $_POST["text1"]; $title = $_POST["title1"]; mysql_query("insert into images values('null','$image','$text','$title')") or die(mysql_error()); echo "Tekst og billede er uploaded!"; } ?> <? mysql_close(); ?>
jeg har fundet et script.. og på bedste måde sat det sammen så det burde virke.. hvad gjør jeg galt ? :o( <? mysql_connect("localhost", "root", ""); mysql_select_db("site"); ?> <? $upfile = "image" ; if(isset($_POST['title1'])){ $pic1 = ImageCreateFromJPEG($upfile) ; $sizeX = ImageSX($pic1); $sizeY = ImageSY($pic1); if ($sizeX > 480) { $newX = 480; $modsize = $newX / $sizeX; $newY = round($sizeY * $modsize); $pic2 = imagecreatetruecolor($newX, $newY); ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY); ImageAlphaBlending($pic2, true); $logoImage = ImageCreateFromPNG('logo.png'); $logoW = ImageSX($logoImage); $logoH = ImageSY($logoImage); $finsizex = (($newX - 4) - $logoW) ; $finsizey = (($newY - 4) - $logoH) ; ImageCopy($pic2, $logoImage, $finsizex ,$finsizey ,0,0, $logoW, $logoH); ImageDestroy($logoImage); ImageJPEG($pic2,"../$pic_sti/".$theid, 85); } else { $pic3 = imagecreatetruecolor($sizeX,$sizeY); ImageCopyResampled($pic3,$pic1, 0,0, 0,0, $sizeX,$sizeY, $sizeX,$sizeY); ImageAlphaBlending($pic3, true); $logoImage = ImageCreateFromPNG('logo.png'); $logoW = ImageSX($logoImage); $logoH = ImageSY($logoImage); $finsizeX = (($sizeX - 4) - $logoW) ; $finsizeY = (($sizeY - 4) - $logoH) ; ImageCopy($pic3, $logoImage, $finsizeX, $finsizeY, 0, 0, $logoW, $logoH); ImageDestroy($logoImage); ImageJPEG($pic3,"../$pic_sti/".$theid, 99); } $newX = 50; $modsize = $newX / $sizeX; $newY = round($sizeY * $modsize); $pic2 = imagecreatetruecolor($newX, $newY); ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY); ImageAlphaBlending($pic2, true); $logoImage = ImageCreateFromPNG('logo2.png'); $logoW = ImageSX($logoImage); $logoH = ImageSY($logoImage); $finsizex = (($newX) - $logoW) ; $finsizey = (($newY) - $logoH) ; ImageCopy($pic2, $logoImage, $finsizex ,$finsizey ,0,0, $logoW, $logoH); ImageDestroy($logoImage); ImageJPEG($pic2,"../$pic_sti_thumb/".$theid, 99); ImageDestroy($pic1); $title = $_POST["title1"]; mysql_query ("INSERT INTO images (id, image, title) VALUES ('$userid', '$theid','$title')") or die(mysql_error()); } ?> <form action="<?= $_SERVER["REQUEST_URI"] ?>" method="post" enctype="multipart/form-data" name=""> <b>Titel </b><input type="text" name="title1"> <input type="file" name="image"> <input type="submit" name="upload" value="upload">
Respekt :-) Det er netop sådan noget jeg leder efter... Vil det sige, at jeg skal oprette en database der hedder "database" ??? Og skal jeg så oprette en table med 4 felter... id navn tekst blob... (til at gemme billedet i)
yeps.. det er rigtigt.. ID = primary Blob skal være lang.. Longblob
desværre kun på server.. og ikke sql
Jeg fortsætter jagten... skal nok vende tilbage, hvis jeg finder noget af interesse. Som sagt leder jeg jo også efter lidt resize´ing
lyder godt.. er ved at blive godt frustreret ..
Vi tilbyder markedets bedste kurser inden for webudvikling