W niektórych przypadkach trzeba mieć pewność, że obrazek, który ma być wyświetlony nie wyjedzie np. poza ustalony rozmiar DIVa. Poniżej zamieszczam funkcję, która wyświetla obrazek z parametrami width oraz height podanymi w parametrach.
Przykład użycia: scalepic(‘plik.jpg’,100,100); wyświetli obrazek, którego rozmiary nie będą przekraczały 100×100px… Oczywiście przeskalowany będzie proporcjonalnie.

function scalePic($file,$maxheight,$maxwidth)
{
    // jesli plik istnieje
    if (file_exists($file)) 
    {
        // pobieramy informacje - 2 pierwsze elementy tablicy to bedzie interesujace nas odpowiednio szerokosc i wysokosc obrazka
        $info=getimagesize($file);
        // na tej podstawie wyliczamy proporcje obrazka
        $proporcja=$info[0]/$info[1];
 
        // jesli jest wezszy niz wyzszy
        if ($info[0]<$info[1])
        {
            // jezeli wysokosc przekracza zadane maksimum
            if ($info[1]>$maxheight)
            {
                // wysokosc ustawiana na to maksimum  
                $height=$maxheight;
                // szerokosc ustawiana z proporcji
                $width=$height*$proporcja;
            }   
            else // jezeli wysokosc nie przekracza maksimum wyswietlamy obrazek o faktycznym rozmiarze
            {
                $height=$info[1];
                $width=$info[0];
            }
        }
        // jesli jest szerszy niz wyzszy
        if ($info[0]>=$info[1])
        {
            // jesli szerokosc przekracza maksimum
            if ($info[0]>$maxwidth)
            {
                // szer. ustawiana na max
                $width=$maxwidth;
                // wys. obl. z prop.
                $height=$width/$proporcja;
            }
            else // faktyczny rozmiar
            {
                $width=$info[0];
                $height=$info[1];
            }
        }
        // zaokraglanie parametrow do liczby calkowitej
        $width=round($width); $height=round($height);
        // wyswietlanie obrazka
        echo "<img src=$file width=$width height=$height>";
    }
}
Dodano 23/03/2010 o 22:26
Kategoria: PHP
Tagi: , , ,