09. september 2004 - 16:28Der er
14 kommentarer og 1 løsning
GD vil kun resize jpg
Jeg har et problem. Jeg vil gøre det muligt at uploade et billede til min server. Det virker fint så længe jeg uploader et jpg fil, men den kan ikke finde ud af det hvis det er gif, nogen der kan finde fejlen? <?php function imageresize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; $types[12]='jpg'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { //$ratio_height=$maxheight/$height; //$ratio_width=$maxwidth/$width; //$ratio=($ratio_width,$ratio_height); $newwidth="400";//$width*$ratio; $newheight="100";//$height*$ratio; // $img_dst=imagecreatetruecolor($newwidth,$newheight); $img_dst=imagecreate($newwidth,$newheight);
//Her skal filen flyttes fra $fra = $_FILES['fil']['tmp_name'];
//Hvilken type fil arbejder vi med? $ext = strtolower(end(explode(".", $_FILES['fil']['name'])));
//Hvis filen er et jpg, jpeg eller gif billede if($ext == "jpg" || $ext == "jpeg" || $ext == "gif") { $tid = time();
//Her giver vi billedet et andet navn, så der ikke kommer to ens navne… $nytNavn = $tid .".jpg";
//Her er vores destination $til = "billeder/" . $nytNavn;
//Her sker det magiske: move_uploaded_file($fra, $til);
//Her resizer vi billedet med Xyborx’s funktion $newSizeDes = "billeder/small/" . $nytNavn; imageresize($til, $newwidth, $newheigh, "billeder/small/" . $nytNavn);
//Her ligges oplysningerne ind databasen – huske at connecte til den! $conn = mysql_connect("localhost", "startside", "St4rtside") or die(mysql_error()); mysql_select_db("min_startside",$conn) or die(mysql_error());
Det får du et dårligere resultat ud af - hvis der altså har været grund til at gemme i gif i første omgang. Jpg og gif er to meget forskellige algoritmer, der bruges til at komprimere forskellige typer billeder med. Brug png, det giver langt bedre resultat, hvis man ellers ville vælge gif ;o)
if ($type==1) { // Brug koden fra eksemplet } else { // Brug den kode, du har }
Naturligvis skal du ændre de faste værdier, jeg har sat ind med de variabler, du bruger. Jeg satte blot faste værdier ind for at gøre det mere overskueligt for dig :)
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.