02. september 2005 - 11:13
Der er
8 kommentarer og 1 løsning
resize billede ved upload
Hej. Jeg har lavet et lille CMS, hvor man bl.a. kan uploade billeder. I den forbindelse vil jeg gerne have en funktion, der automatisk gør billedet 200px i bredden. Dvs. uanset hvordan billedet er hos brugeren inden upload, skal det uploades som 200px bred (og selvfølgelig ikke strækkes...) Hvordan gør jeg det?
Annonceindlæg fra HP
02. september 2005 - 11:32
#1
// image src size $srcSize = getImageSize($src); // image dest size $destSize[0] = width, $destSize[1] = height $srcRatio = $srcSize[0]/$srcSize[1]; // width/height ratio $destRatio = $maxWidth/$maxHeight; if ($destRatio > $srcRatio) { $destSize[1] = $maxHeight; $destSize[0] = $maxHeight*$srcRatio; } else { $destSize[0] = $maxWidth; $destSize[1] = $maxWidth/$srcRatio; } $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
02. september 2005 - 12:07
#2
Ja jeg har ændret lidt på det, for at få det til at virke, men nu har jeg gjort plads til billedet i $destImage. Hvordan gemmer jeg så billedet igen, så jeg kan kopiere det ind på serveren med en copy(xx,xx); // image src size $srcSize = getImageSize("../pics/{$_FILES['filnavn']['name']}"); $maxWidth = 200; $maxHeight = 600; // image dest size $destSize[0] = width, $destSize[1] = height $srcRatio = $srcSize[0]/$srcSize[1]; // width/height ratio $destRatio = $maxWidth/$maxHeight; if ($destRatio > $srcRatio) { $destSize[1] = $maxHeight; $destSize[0] = $maxHeight*$srcRatio; } else { $destSize[0] = $maxWidth; $destSize[1] = $maxWidth/$srcRatio; } $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
02. september 2005 - 12:59
#3
hov du får lige resten af funktionen function image_resize($src,$dest,$maxWidth,$maxHeight,$quality=100) { if (file_exists($src) && isset($dest)) { // path info $destInfo = pathInfo($dest); // image src size $srcSize = getImageSize($src); // image dest size $destSize[0] = width, $destSize[1] = height $srcRatio = $srcSize[0]/$srcSize[1]; // width/height ratio $destRatio = $maxWidth/$maxHeight; if ($destRatio > $srcRatio) { $destSize[1] = $maxHeight; $destSize[0] = $maxHeight*$srcRatio; } else { $destSize[0] = $maxWidth; $destSize[1] = $maxWidth/$srcRatio; } // path rectification if ($destInfo['extension'] == "gif") { $dest = substr_replace($dest, 'jpg', -3); } // true color image, with anti-aliasing $destImage = imageCreateTrueColor($destSize[0],$destSize[1]); //imageAntiAlias($destImage,true); // src image switch ($srcSize[2]) { case 1: //GIF $srcImage = imageCreateFromGif($src); break; case 2: //JPEG $srcImage = imageCreateFromJpeg($src); break; case 3: //PNG $srcImage = imageCreateFromPng($src); break; default: return false; break; } // resampling imageCopyResampled($destImage, $srcImage, 0, 0, 0, 0,$destSize[0],$destSize[1],$srcSize[0],$srcSize[1]); // generating image switch ($srcSize[2]) { case 1: case 2: imageJpeg($destImage,$dest,$quality); break; case 3: imagePng($destImage,$dest); break; } return true; } else { return false; } }
02. september 2005 - 14:33
#4
Jeg får en "siden kan ikke vises". Ved ikke om jeg kalder funktionen rigtigt?: $place = "../pics/{$_FILES['filnavn']['name']}"; $newDestination = "../pics/{$_FILES['filnavn']['name']}ny"; image_resize($place,$newDestination,200,600,$quality=100);
02. september 2005 - 14:42
#5
fejl: intern HTTP 500-serverfejl. Jeg har B-one, kan det have noget at gøre med at "safe mode" er slået til?
04. september 2005 - 21:33
#6
Ingen der kan hjælpe videre her?
05. september 2005 - 17:55
#7
prøv image_resize($place,$newDestination,200,600); eller image_resize($place,$newDestination,200,600,100);
05. september 2005 - 17:56
#8
hmm burde forresten ikke være det der var problemet men med 500 fejl lyder det til at være dit webhotel den er gal med
16. september 2005 - 21:52
#9
Jeg kunne ikke få det til at virke, så lukker....
Vi tilbyder markedets bedste kurser inden for webudvikling