06. januar 2005 - 21:40
Der er
14 kommentarer og 1 løsning
image resizer
jeg har et script der oploader jpg filer i en mappe, så de så bag efter vises på en side.... og det fungere også perfekt :) men skal bruge et script som resizer billedet til fx en MAX størrelse på 100*100 pixel....
Annonceindlæg fra Deloitte
06. januar 2005 - 22:01
#1
Her er en funktion jeg selv benytter: function Thumb($sourcefile, $targetfile, $size) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $delta = $size/max($source_x,$source_y); $dest_x = round($source_x*$delta); $dest_y = round($source_y*$delta); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); } Den kaldes så med: $source = "img/originalt_billede.jpg"; $target = "img/thumbs/thumb_billede.jpg"; $size = 100; Thumb($source, $target, $size);
06. januar 2005 - 22:04
#2
target er vel der for den skal gemmes... men.... size er det så max pixel ?
06. januar 2005 - 22:07
#3
Ja, det er korrekt. Nu ved jeg ikke om du vil bruge den i forbindelse med upload eller på billeder du allerede har liggende, men det er selvfølgelig muligt at bruge funktionen på hele mapper eller direkte ved uploads.
06. januar 2005 - 22:09
#4
<form action="on-step2.php" method="post" enctype="multipart/form-data"> <input type="file" name="upfil" > $konfiguration["upload_bibliotek"] = "../upload"; $konfiguration["max_stoerrelse"] = "3000"; list($major, $minor, $rev) = explode(".", phpversion()); if($major < 4) { die("lort"); } if($minor < 1) { $_FILES = $HTTP_POST_FILES; $_POST = $HTTP_POST_VARS; $_SERVER = $HTTP_SERVER_VARS; } if($_FILES["upfil"]["size"] > 0) { $fra = $_FILES["upfil"]["tmp_name"]; $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"]; $billedinfo = $_FILES["upfil"]["name"]; $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) . "kb"); } if(function_exists("move_uploaded_file")) { move_uploaded_file($fra, $til); } else { copy($fra, $til); } } $source = "img/$billedinfo"; $target = "img/thumbs/$billedinfo"; $size = 100; Thumb($source, $target, $size); $billedinfo function Thumb($sourcefile, $targetfile, $size) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $delta = $size/max($source_x,$source_y); $dest_x = round($source_x*$delta); $dest_y = round($source_y*$delta); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); } sådan her så vel ????
06. januar 2005 - 22:14
#5
Tja, det ser rigtigt ud, for så vidt din mappe hedder: 'img'. Bortset fra: $billedinfo som står helt alene ;o) Du kunne osse bare bruge: $target = "img/thumbs/$billedinfo"; Thumb($til, $target, 100);
06. januar 2005 - 22:15
#6
virker jo helt perfekt, tak for det
06. januar 2005 - 22:16
#7
Velbekommen :O)
06. januar 2005 - 22:44
#8
<? $bi = "panasonic-auto.jpg"; $source = "upload/$bi"; $target = "smallpic/$bi"; $size = 75; Thumb($source, $target, $size); function Thumb($sourcefile, $targetfile, $size) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $delta = $size/max($source_x,$source_y); $dest_x = round($source_x*$delta); $dest_y = round($source_y*$delta); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); } ?> hmmm nu kan jeg ikke få den til at virke den siger ingen felj...men der kommer ingen lille billede i mappen og den er chmod "777"
06. januar 2005 - 22:59
#9
Jeg kan nu ikke se noget galt i scriptet, hvis stier og billednavn er korrekte. Og du har chmodet til '0777' (ikke 777!)?
06. januar 2005 - 23:03
#10
Fatal error: Call to undefined function: thumb() in 0777 har jeg adrig hørt om og det kan mit program heller ikke
06. januar 2005 - 23:07
#11
Ok, troede det var php's chmod(). Mht din fejlmelding kan du prøve at definere funktionen først i dit script (inden du kalder den) og husk evt. forskel på små og store bogstaver, altså: Thumb().
06. januar 2005 - 23:10
#12
er det ikke det jeg gør ?
06. januar 2005 - 23:10
#13
Ved nærmere eftertanke er der IKKE forskel på små og store bogstaver i funktionsnavne, men de skal defineres inden brug i php 3.
06. januar 2005 - 23:11
#14
Jo, det ser som sagt rigtigt ud. Jeg kan ikke se nogen fejl i dit eksempel.
06. januar 2005 - 23:26
#15
Jeg har testet dit eksempel på mit webhotel og det virker upåklageligt.
Vi tilbyder markedets bedste kurser inden for webudvikling