Avatar billede donslund Nybegynder
08. april 2005 - 13:13 Der er 4 kommentarer og
1 løsning

skalering af billede

Men dette kode:

<?
if(isset($_GET['id']) && isset($_GET['maxhojde']) && isset($_GET['maxbrede'])){
        $picture = "billeder/".$id;

        $pw = $maxbrede; //billede max-bredde
        $ph = $maxhojde; //billede max-højde

    if(file_exists("$picture")){
        $pic = $picture;
        $size = getimagesize("$pic");
        $regn = $size[0]/$size[1];
        if($regn > 1){
            $new_w = $pw;
            $division = $size[0] / $new_w;
            $new_h = $size[1] / $division;
        }else{
            $new_h = $ph;
            $division = $size[1] / $new_h;
            $new_w = $size[0] / $division;
        }
        $im = ImageCreateTrueColor($new_w,$new_h);
        $src_img = ImageCreateFromJpeg("$pic");
        ImageCopyResized($im,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));

        header("Content-type: image/jpeg"); // image/png hvis det er et png-billede
        ImageJPEG($im); // eller ImagePNG hvis det er et PNG

        ImageDestroy($im);
    }
}
?>

Vil jeg have billeder vist så de ikke på noget tidpunkt overstiger 100px i bredden eller 150px i højden. Men hvis jeg viser et billede der oprindeligt er 100x120 pixels, så bliver det på skærmen 125x150 pixels. Det burde det jo ikke. Er der nogen der kan greje det?
Avatar billede bromer Nybegynder
08. april 2005 - 13:17 #1
list($width,$height,$type,$attr) = getimagesize($filesArray[$filename]['tmp_name']);

$factor = 100 / $width;
if (($factor * $height) > 150)
$factor = 120 / $height;
$new_height = $factor * $height;
$new_width = $factor * $width;

Det burde regne den nye bredde og højde ud korrekt.
Avatar billede donslund Nybegynder
08. april 2005 - 13:24 #2
Og hvor skal jeg sætte det ind?

Jeg kalder koden med:
print "<img src=\"billede.php?id=".$row_limit["picture"]."&maxhojde=150&maxbrede=100\" border=\"0\">";

Så det kan også bruges andre steder hvor billederne måske skal være 300px bredde.
Avatar billede bromer Nybegynder
08. april 2005 - 13:29 #3
det jeg har skrevet er også lidt forkert.. det skal være sådan her:

$factor = $_GET['maxbrede'] / $width;
if (($factor * $height) > $_GET['maxhojde'])
$factor = $_GET['maxhojde'] / $height;
$new_height = $factor * $height;
$new_width = $factor * $width;

så burde den være i hus
Avatar billede donslund Nybegynder
08. april 2005 - 14:08 #4
Egentlig så opstod problemet hvis originalbilledets størrelser var mindre en maxhojde og maxbrede. Men tak for din tid. Altid rart at se hvordan andre vil løse opgaverne.
Avatar billede bromer Nybegynder
08. april 2005 - 14:21 #5
tak for point, men min løsning forhindrer også at det bliver scalet når billedet er småt nok. Vil du hellere have en funktion der finder passende højde og bredde så billedets definition ligger så tæt på 100x150?
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