Avatar billede vuzeer Nybegynder
09. september 2004 - 16:28 Der 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);

// imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if($destinationfile==false)
{
//header("Content-type: image/jpeg");
$imagetype($img_dst);
}
else
$imagetype($img_dst,$destinationfile);
imagedestroy($img_dst);
return true;
}
else
{
return false;
}




//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());

$query    = "INSERT INTO images (name, time) VALUES ('$nytNavn', '$tid')";
mysql_query($query);
}

header("Location: billeder.php");
?>

På forhånd tak
Avatar billede prec Nybegynder
09. september 2004 - 17:03 #1
så vidt jeg husker virker gd og gif ikke ret godt sammen generelt.
Avatar billede Slettet bruger
09. september 2004 - 17:30 #2
I de nyere versioner kan GDLib kun læse GIF ikke skrive. Alternativet erat gemme som PNG
Avatar billede vuzeer Nybegynder
09. september 2004 - 19:14 #3
Jeg har prøvet jeg gemme dem som jpg men så skrev den ikke filen
Avatar billede prec Nybegynder
09. september 2004 - 20:57 #4
prøv at fjern din redirect, og kig på fejlbeskeden
Avatar billede olebole Juniormester
10. september 2004 - 03:32 #5
<ole>

Prøv dette:

<?
$srcImg = imageCreateFromGif( "./test.gif" );
$destImg = imageCreateTrueColor( 100, 100 );

imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0, 100, 100, 200, 190);

imagepng( $destImg, "./test.png" );

imagedestroy($srcImg);
imagedestroy($destImg);
?>

Ret bredde og højde, så de passer til din 'test.gif'. Læg din 'test.gif' i samme folder som dit script ... det burde virke  :)

/mvh
</bole>
Avatar billede vuzeer Nybegynder
10. september 2004 - 08:26 #6
Bole er ikke helt med: hvad skal jeg slette og hvad skal jeg beholde?
Avatar billede olebole Juniormester
10. september 2004 - 14:39 #7
Intet ... det er et GD-eksempel, der kan tage en gif - resize den og konvertere den til en png.

Spørgsmålet (10/09-2004 08:26:43) tyder på, du burde sætte dig ind i grundlæggende PHP - f.eks. købe en god bog om emnet  :)
/mvh
Avatar billede vuzeer Nybegynder
10. september 2004 - 17:03 #8
Nu er det brae sådan at jeg kan gundlæggende og har 2 php bøger. Den ene har bare ikke omhandlet GD, og den anden er jeg ikke noget så langt i
Avatar billede olebole Juniormester
10. september 2004 - 17:09 #9
Har du testet eksemplet?
Avatar billede vuzeer Nybegynder
10. september 2004 - 17:13 #10
nej har ikke haft tid, men jeg gør det nu
Avatar billede vuzeer Nybegynder
10. september 2004 - 17:18 #11
Jo det virkede, men kan jeg også konvertere til jpg?
Avatar billede olebole Juniormester
10. september 2004 - 17:22 #12
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)
Avatar billede vuzeer Nybegynder
10. september 2004 - 17:24 #13
okay tak, giv et svar og du for point, så kan jeg selv få koden til at passe til formlen
Avatar billede olebole Juniormester
10. september 2004 - 17:26 #14
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  :)
Avatar billede olebole Juniormester
10. september 2004 - 17:26 #15
... og et svar  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester