Avatar billede elskermad.dk Nybegynder
18. januar 2007 - 20:40 Der er 3 kommentarer og
1 løsning

logisk tankegang omkring forhold søges

Hej Eksperter!

Jeg har følgende problemstilling:

Når jeg oploader et billede til min server kan højde/bredde variere.

Jeg ønsker at lave et thumbnail, men som jeg laver det nu bliver den forstrækt og dette ønsker jeg at undgå, men min logiske sans er ikke helt på toppen c",)

Jeg angiver i to variabler ($thumbheight og $thumbwidth) hvad thumbnailen max må være i pixel.

Det kan fx være 200x200 også skal scriptet selv kunne regne ud at hvis originalen er højere end den er bred skal det blive noget lignende (>200)x200 og hvis omvendt skal det være 200x(>200) - Hvis forhold er ens skal det selvfølgelig være 200x200 stadigt.

Er der nogen der kan være behjælpelig med at regne ovenstående problem ud?

På forhånd mange tak for jeres hjælp :)
Avatar billede elskermad.dk Nybegynder
18. januar 2007 - 20:54 #1
er der nogen logik i den her kode?

$forhold_orig    = $height / $width;
$forhold_thumb    = $thumbheight / $thumbwidth;

if ($forhold_orig == 1) {
    // kvadrat
    if ($thumbheight == $thumbwidth) {
        // gør intet, thumbnailen er også et kvadrat
    }
    elseif ($thumbheight < $thumbwidth) {
        // thumbnail er liggende
        $thumbheight = $thumbheight * $forhold_thumb;
    }
    else {
        // thumbnail er stående
        $thumbwidth = $thumbwidth * $forhold_thumb;                                       
    }
}
elseif ($forhold_orig < 1) {
    // liggende billede
    if ($thumbheight == $thumbwidth) {
        // thumbnail er et kvadrat
        $thumbheight = $thumbheight * $forhold_thumb;
    }
    elseif ($thumbheight < $thumbwidth) {
        // thumbnail er liggende
        $thumbheight = $thumbheight * $forhold_thumb;
    }
    else {
        // thumbnail er stående
        $thumbwidth = $thumbwidth * $forhold_thumb;                                       
    }
}
else {
    // stående billede
    if ($thumbheight == $thumbwidth) {
        // thumbnail er et kvadrat
        $thumbwidth = $thumbwidth * $forhold_thumb;
    }
    elseif ($thumbheight < $thumbwidth) {
        // thumbnail er liggende
        $thumbheight = $thumbheight * $forhold_thumb;
    }
    else {
        // thumbnail er stående
        $thumbwidth = $thumbwidth * $forhold_thumb;                                       
    }
}
Avatar billede elskermad.dk Nybegynder
18. januar 2007 - 21:55 #2
med den her kode bliver de trykket flade :(

$thumbsize    = explode("x",$thumbsize);

$divisor    = ($width > $height)? ($width / $thumbsize[1]) : ($height / $thumbsize[0]);

if ($thumbsize[0] == $thumbsize[1]) {
    // kvadratisk thumbnail
    $thumbwidth        = $thumbsize[0];
    $thumbheight    = $thumbsize[1];
}
elseif ($thumbsize[0] > $thumbsize[1]) {
    // liggende thumbnail
    $thumbwidth        = $thumbsize[0];
    $thumbheight    = $thumbsize[1] * $divisor;
}
else {
    // stående thumbnail
    $thumbheight    = $thumbsize[1];
    $thumbwidth        = $thumbsize[0] * $divisor;
}
Avatar billede intenz Novice
19. januar 2007 - 10:26 #3
Jeg har tidligere brugt denne kode til et tilsvarende problem:

$width = 200;
$height = 200;
$fil = "din_fil";

list($width_orig, $height_orig) = getimagesize($fil);
if ($width_orig < $width){$width=$width_orig;}
if ($height_orig < $height) {$height=$height_orig;}
if ($width && ($width_orig < $height_orig)) {
$width = round(($height / $height_orig) * $width_orig);
} else {
$height = round(($width / $width_orig) * $height_orig);
}
Avatar billede elskermad.dk Nybegynder
19. januar 2007 - 10:56 #4
den prøver jeg da lige :)
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