Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvan suurennus GD kirjastolla

NiLon [13.09.2003 16:41:19]

#

Minulla olisi kuva joka pitäisi suurentaa mutta suhteen pitäisi säilyä samana, jotenka miten sen teen.

NiKC [13.09.2003 18:32:46]

#

Mä tein vähän aikaa sitten pienentävän funkkarin duunissa. Kenties voit soveltaa sitä toiseen suuntaan.

function resizeImage($filename, $maxw = 350, $maxh = 300)
{
    $fn     = pathinfo($filename);

    /* $dest oli alkujaan sitä varten että skaalattu kuva tallentuisi
             eri nimellä kuin alkuperäinen. Nyt $dest on sama kuin
             alkuperäinen ja skaalattu siis kirjoitetaan alkuperäisen
             päälle. */
    $dest   = $fn['dirname'] . "/" . $fn['basename'];

    /* Mikäli haluaa skaalata muita kuin .jpg-kuvia niin alla olevaan
       switchiin sitten vain */

    switch (strtolower($fn['extension']))
    {
        case "jpg":
            $img = imagecreatefromjpeg($filename);
            break;
        default:
            print("Unsupported image, only jpg-images are supported. Scaling aborted.");
            return $filename;
            break;
    }

    $imgs   = getimagesize($filename);
    $imgw   = $imgs[0];
    $imgh   = $imgs[1];

    if ($imgw > $imgh && $imgw > $maxw)
    {
        $ratio  = 1 - (($imgw - $maxw) / $imgw);
        $neww   = ceil($imgw * $ratio);
        $newh   = ceil($imgh * $ratio);
        $newim  = imagecreatetruecolor($neww, $newh);

        imagecopyresampled($newim, $img, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh);
        imagejpeg($newim, $filename, 60);

        return $dest;
    }
    elseif ($imgh > $maxh)
    {
        $ratio  = 1 - (($imgh - $maxh) / $imgh);
        $neww   = ceil($imgw * $ratio);
        $newh   = ceil($imgh * $ratio);
        $newim  = imagecreatetruecolor($neww, $newh);

        imagecopyresampled($newim, $img, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh);
        imagejpeg($newim, $filename, 60);

        return $dest;
    }

    return $filename; // Mitään ei muutettu
}

NiLon [17.09.2003 13:12:38]

#

Kiitos tuo auttoi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta