Avatar billede nielspt Nybegynder
20. marts 2006 - 17:00 Der er 5 kommentarer og
1 løsning

proportioner på thumbnails ikke rigtige

Hej eksperter!

Jeg har fundet følgende PHP script, som jeg synes er enkelt og rigtig godt. Der er dog ét problem: Når der genereres thumbnails, 'presser' den bare billedet ned i størrelse, den fastholder ikke proportionerne...

Er der nogen der kan ændre dette, så thumbnail'et bliver en korrekt miniature af det rigtige billede?

________________________________________________

<?
//----  Settings Start ---\\
// Image Information
$imageWidth=100;
$imageHeight=100;

// Table Layout
$rows=3;
$cols=5;

//Image path
$libery="images/"; // remember to finish with /

// Settings Stop----------//

$viewNum=$cols*$rows;
if(!$firstImage){ // so it works if you just enter default.php and show the pictures without having to define the variables in the path
        $firstImage=1;
}
function getImages($firstImage){
    global $viewNum, $imageWidth, $imageHeight,$cols,$libery;  //insures that the function gets the variables
    $handle=opendir($libery); //opens directory
    while($file=readdir($handle)){ // reads the directory
        $extension=substr($file,-4); // gets the extension of the files
        if(($extension == ".jpg") || ($extension == ".gif") || ($extension == ".png") ){ // checks for image files
            $all[]=$file;  //adds positive results to the archive
        }
    }
    $colscounter=0; // variable that controls the tablebuilding system below
    $firstImage--; // variable that insures that the first image is being showed. Case: It looks best if the links begins with 1 but the array begins with 0
    if(isset($all)){  // if array is set build the table
        print "<table>";
        for($i=$firstImage; $i < $firstImage+$viewNum; $i++){
            if($all[$i]){ // checks for rinning dry of imges
                if($i==$firstImage + $colscounter*$cols){ // if true: new row
                    $colscounter++;
                    print "<tr>";
                } // add the image
                print "<td><a href='".$libery."".$all[$i]."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Click to Enlarge'></a></td>";
            }
            else{ // stop if no more images
                break;
            }
        }
        print "</table><br>";
        $num=count($all);  //number of pictures in actual libery
        makeList($num); // function to make the links list
    }
    else{
        print "Der var desværre ingen billeder i dette bibliotek<br><a href='java script:history.back()'>Go Back</a>";
    }
}
function makeList($num){
    global $libery, $firstImage, $viewNum; //insures that the function gets the variables
    $numLinks = $num / $viewNum; // finds the number og links to be maked
    for($a=0; $a < $numLinks;$a++){
            $start=$a*$viewNum+1;  //adds 1 because then the links begins with ex. number 1-10 and 11-20 instead of 0-10 and 10-20
            $finish=$a*$viewNum+$viewNum;
            if($finish>$num){ // insures that the final link returns the right amount of pictures instead of to much
                $finish=$num;
            }
        if(($firstImage >= $start) && ($firstImage < $a * $viewNum+$viewNum)){ // if true: makes no link because you already are on the page
            print "$start - $finish</a>&nbsp;&nbsp;";
        }
        else{ // makes the link
            print "<a href='default.php?libery=$libery&firstImage=$start'>$start - $finish</a>&nbsp;&nbsp;";
        }
    }
}
?>


________________________________________________

Tak!
Mvh. Niels
Avatar billede jakobdo Ekspert
20. marts 2006 - 17:50 #1
Jeg bruger selv denne funktion:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );

    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    imagejpeg( $dstim, $newfilename, 85 );
   
    imagedestroy( $dstim );
    imagedestroy( $srcim );
   
    return file_exists($newfilename);
}
Avatar billede nielspt Nybegynder
20. marts 2006 - 18:03 #2
okay.. Kan du sige mig, hvor jeg så skal sætte din stump kode ind i min kode? har lidt svært ved at overskue det.

Tak.
Avatar billede jakobdo Ekspert
21. marts 2006 - 07:53 #3
Du har slet ikke noget resize med i din kode.
Så du må evt have noget kode som resizer i uploaden.
Avatar billede nielspt Nybegynder
25. marts 2006 - 16:29 #4
hvordan lukker jeg spørgsmålet?
Avatar billede jakobdo Ekspert
26. marts 2006 - 00:29 #5
Enten smider du selv et svar og accepterer eller også accepterer du mit svar her...
Avatar billede jakobdo Ekspert
26. marts 2006 - 15:39 #6
takker for point
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