18. november 2006 - 16:33Der er
43 kommentarer og 1 løsning
Resize image
Hej Jeg har et script der uploader billeder - selve billedet bliver smidt i biblioteket "billeder" og stien bliver smidt i en mysql database.
SAmtidigt med at billedet uploades, vil jeg nu også have det resized... og hvis billedet, som oploades fylder fx 1mb så skal det efter resize fylde væsentligt mindre. Kan det lade sig gøre?
Jeg kender ikke så meget til resize området, så jeg er egentlig ikke klar over hvad jeg søger. Det er vel noget i retningen af det du finder her: http://www.ide.dk/sw7635.asp
Hvis du klikker på en sofa, så får du et stort billede af en sofa. Der er sådan en funktion jeg leder efter.
Da det er brugerne der oploader billeder, så kan jeg ikke bestemme størrelsen på disse... og der er derfor jeg tænker at de skal resizes...
clausberg > Da det er brugerne der oploader billeder, så kan jeg ikke bestemme størrelsen på disse... og der er derfor jeg tænker at de skal resizes...
Du kan faktisk godt bestemme, eftersom du kan sætte nogle kriterier f. eks.:
som sagt er jeg ikke klar over hvordan jeg laver funktionen smartest. Det jeg gerne vil have er som sagt: http://www.ide.dk/sw7635.asp - klik på en vilkårlig sofa, og man ser et stor billede.
Dvs. det billede, brugeren uploader, skal vises som et lille billede, men ved klik på det, skal man se et lidt større billede.
Vil det sige, at det er thumbnail billedet man ser, og som man klikker på for at se det lidt større billede.
Det er desværre ikke så noget jeg er på udkig efter.
mcardle>>> den funktion du har lavet ovenfor... der hvor du sætter nogle begrænsninger på størrelsen, hvis den skaluploades. Det samme kan vel laves med størrelsen på billedet. Hvad nu hvis jeg vil begrænse brugerne til kun at uploade billeder der er under 1mb?
function make_thumbnail($filename, $thumbs_dir, $percent = 0.4) { // her der får du fat i højde og bredde af billedet og skalerer disse værdier: list($width, $height) = getimagesize($filename); $newwidth = $width * $percent; $newheight = $height * $percent;
// Her gemmes thumbnail billedet: imagejpeg($thumb, $thumbs_dir.'thumb_'.basename($filename)); } ?>
</td> <td width="300">Dit produkt er nu uploaded til vores database<br/><br/><a href="b-insert2.php">Klik her for at uploade flere produkter</a><br /><br /><a href="index.php">... eller klik her for at gå til forsiden</a></td> </tr> </table>
mysql_query("INSERT INTO tbl_716418(filename,design,email,kategori,header,pris,comment,added) VALUES('$file','".$_SESSION->username."','$email','$kategori','$header','$pris','$comment',NOW())") or die(mysql_error());
Hæ hæ hæ... ja, det kunne da godt være jeg skulle undersrege hvad problemet er: jeg kan ikke få placeret følgende script det rigtige sted i det script jeg ovenfor har postet: if($_FILES['file']['size'] < 1024000){ upload fil } else{ echo 'Din fil er for stor'; }
if(move_uploaded_file($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file)) { mysql_query("INSERT INTO tbl_716418(filename,design,email,kategori,header,pris,comment,added) VALUES('".$file."','".$session->username."','".$email."','".$kategori."','".$header."','".$pris."','".$comment."',NOW())") or die(mysql_error()); $output .= 'Filen er uploadet<hr />';
// THUMBNAIL BLIVER LAVET HER: $thumbnailDir = '/thumbnails/'; make_thumbnail( $curDir . $uploadDir . $file, $curDir . $thumbnailDir, 0.4 ); } } } } else{ echo 'Din fil er for stor'; } function make_thumbnail($filename, $thumbs_dir, $percent = 0.4) { // her der får du fat i højde og bredde af billedet og skalerer disse værdier: list($width, $height) = getimagesize($filename); $newwidth = $width * $percent; $newheight = $height * $percent;
// Her gemmes thumbnail billedet: imagejpeg($thumb, $thumbs_dir.'thumb_'.basename($filename)); } ?>
</td> <td width="300">Dit produkt er nu uploaded til vores database<br/><br/><a href="b-insert2.php">Klik her for at uploade flere produkter</a><br /><br /><a href="index.php">... eller klik her for at gå til forsiden</a></td> </tr> </table>
if(move_uploaded_file($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file)) { mysql_query("INSERT INTO tbl_716418(filename,design,email,kategori,header,pris,comment,added) VALUES('".$file."','".$session->username."','".$email."','".$kategori."','".$header."','".$pris."','".$comment."',NOW())") or die(mysql_error()); $output .= 'Filen er uploadet<hr />';
// THUMBNAIL BLIVER LAVET HER: $thumbnailDir = '/thumbnails/'; make_thumbnail( $curDir . $uploadDir . $file, $curDir . $thumbnailDir, 0.4 ); } else{ echo 'Din fil er for stor'; } } } } function make_thumbnail($filename, $thumbs_dir, $percent = 0.4) { // her der får du fat i højde og bredde af billedet og skalerer disse værdier: list($width, $height) = getimagesize($filename); $newwidth = $width * $percent; $newheight = $height * $percent;
Mcardle->> Dit script virker sådan set ok... på nær, at selve thumb billedet vises ikke - jeg kan se, at det slet ikke bliver genereret. I stedet vises det lille ikon for mangledne billede (det med et kryds over). Hvis man klikker på ikonet, så kan man se det store billede - hvilket jo er meningen.
Jeg har ikke testet det her script, men det kan du jo lige prøve... Det skulle virke... */
$konfiguration["upload_bibliotek"] = "upload"; $konfiguration["max_stoerrelse"] = "2048"; // I KB. altså 2048 er 2 MB $konfiguration["filtype"] = "image/pjpeg"; $konfiguration["thumbdir"] = "upload/thumbnails";
/* Check PHP-version */ list($major, $minor, $rev) = explode(".", phpversion()); if($major < 4) { die("Jeg kan kun arbejde med PHP 4.0.0 eller derover"); }
/* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */ if($minor < 1) { $_FILES = $HTTP_POST_FILES; $_POST = $HTTP_POST_VARS; $_SERVER = $HTTP_SERVER_VARS; }
/* Hvor flytter vi fra og til */ $fra = $_FILES["upfil"]["tmp_name"]; $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
/* Accepterer vi filens stoerrelse? */ $fil_stoerrelse = filesize($fra)/1024; if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) { die("Desværre - filen er for stor. Jeg accepterer kun " . $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " . ceil($fil_stoerrelse, 1) . " kb"); }
if($_FILES["upfil"]["type"] != $konfiguration["filtype"]){ die("Filtypen er ikke godkendt"); }
/* Saa koerer vi */ if(function_exists("move_uploaded_file")){ $fileUploadet = move_uploaded_file($fra, $til); } else{ $fileUploadet = copy($fra, $til); }
$sql_status = mysql_query("INSERT INTO tbl_716418(filename,design,email,kategori,header,pris,comment,added) VALUES('$file','$session->username','$email','$kategori','$header','$pris','$comment',NOW())") OR die(mysql_error());
// THUMBNAIL BLIVER LAVET HER: make_thumbnail($til,$konfiguration["thumbdir"]); }
function make_thumbnail($filename, $thumbs_dir, $percent = 0.4){ // her der får du fat i højde og bredde af billedet og skalerer disse værdier: list($width, $height) = getimagesize($filename); $newwidth = $width * $percent; $newheight = $height * $percent;
// Beskeder if($fileUploadet == true){ echo "Din fil er nu uploadet"; }
if($sql_status == true){ echo "Din fil er nu registreret i databasen"; }
if($billed_status == true){ echo "Der er nu oprettet et thumbnail"; }
?>
</td> <td width="300">Dit produkt er nu uploaded til vores database<br/><br/><a href="b-insert2.php">Klik her for at uploade flere produkter</a><br /><br /><a href="index.php">... eller klik her for at gå til forsiden</a></td> </tr> </table>
//Husk at bruge method="post" i din form og set enctype="multipart/form-data"
Jeg har lavet mysql_real_escape_string() om til mysql_escape_string(), for jeg har haft lidt problemer med at få det til at virke, selom jeg har PHP 5.
Se om det virker, ellers må vi jo på den igen... ;o)
Nej, det skal det ikke. Du kan godt kalde den det, men det er mig selv der har lavet variablen, så jeg må selv bestemme hvad den skal hedde. Det er ikke en forudbestemt variabel. ;o)
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.