Avatar billede stonejunkie Nybegynder
07. februar 2005 - 21:34 Der er 2 kommentarer og
1 løsning

Resize image funktion.

Hej jeg har lavet denne funktion som skal resize billede filer.

Problemet er at hvis jeg kalder funktionen med følgende argumenter:
resizeImage($temp_file, $fileNameDist, 100, 200);

Så resizer den et billede med størrelsen, 1536x1024 til 7x13 pixel. Så selve resize delen er vel god nok, eller hvad?
Jeg har gået scriptet igennem for regne fejl, men uden held. Er der nogen der kan hjælpe?

function resizeImage($sourceFile, $targetFile, $maxWidth, $maxHeight){
   
    list($sourceImageWidth, $sourceImageHeight, $fileType) = getimagesize($sourceFile);
   
    if ($sourceImageWidth > $maxWidth){
        $delta = $maxWidth/$sourceImageWidth;
        if (($sourceImageHeight * $delta) > $maxHeight) $delta = $maxHeight/$sourceImageHeight;
    } elseif ($sourceImageHeight > $maxHeight) $delta = $maxHeight/$sourceImageHeight;
   
    if (isset($delta)){
        $destImageWidth = round($delta * $maxWidth);
        $destImageHeight = round($delta * $maxHeight);
    } else {
        $destImageWidth = $sourceImageWidth;
        $destImageHeight = $sourceImageHeight;
    }
   
    $targetImage = imagecreatetruecolor($destImageWidth, $destImageHeight);
   
    switch($fileType){
       
        case ($fileType == 1):
            $sourceImage = imagecreatefromgif($sourceFile);
            imagecopyresampled($targetImage, $sourceImage, 0,0,0,0, $destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
            imagegif($targetImage,$targetFile,100);
            break;
       
        case ($fileType == 2):
            $sourceImage = imagecreatefromjpeg($sourceFile);
            imagecopyresampled($targetImage, $sourceImage, 0,0,0,0, $destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
            imagejpeg($targetImage,$targetFile,100);
            break;
           
        case ($fileType == 3):
            $sourceImage = imagecreatefrompng($sourceFile);
            imagecopyresampled($targetImage, $sourceImage, 0,0,0,0, $destImageWidth, $destImageHeight, $sourceImageWidth, $sourceImageHeight);
            imagepng($targetImage,$targetFile,100);
            break;           
    }
}
Avatar billede detox Nybegynder
07. februar 2005 - 21:49 #1
if (isset($delta)){
        $destImageWidth = round($delta * $maxWidth);
        $destImageHeight = round($delta * $maxHeight);

skal være:

    if (isset($delta)){
        $destImageWidth = round($delta * $sourceImageWidth);
        $destImageHeight = round($delta * $sourceImageHeight);
Avatar billede stonejunkie Nybegynder
07. februar 2005 - 22:01 #2
Fantastisk! mange tak jeg må have set mig fuldstændig blind på det. Takker mange gange for svaret.
Avatar billede detox Nybegynder
07. februar 2005 - 22:13 #3
Det var så lidt, det hænder man ikke kan se skoven for træer :O)
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