Преоразмеряване на снимки с php.

При търсене в гугъл за php image resize най-отпред излизат простички алгоритми за преоразмеряване.
Обаче при по-особени размери, се дънят като ученичка на сефтето си. 😀 Разбира се, мрежата е необятна и се намират и цели класове, които вършат черната работа. Обаче правим едно елементарно допълнение и нещата си идват на мястото.

Както обикновено, ще си пусна функцията, за да не я търся когато ми притрябва. 😀

function maintbg($name, $tempname)
{
    global $wd;
    list($width_orig, $height_orig) = getimagesize($tempname);
// същността
    $width = 900;
    $height = 192;
    if (($width_orig > $width) || ($height_orig > $height)) {
        if (($width_orig > $width) && ($height_orig > $height)) {
            if ($width_orig > $height_orig) {
                $k = ($height / $height_orig);
            } else {
                $k = ($width / $width_orig);
            }
        } else {
            if ($width_orig > $width) {
                $k = ($width / $width_orig);
            } elseif ($height_orig > $height) {
                $k = ($height / $height_orig);
            } else {
                $k = 1;
            }
        }
        $width = round($width_orig * $k);
        $height = round($height_orig * $k);
// край
        $small = imagecreatetruecolor($width, $height);
        $im = imagecreatefromjpeg($tempname);
        imagecopyresampled($small, $im, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
        ImageJPEG($small, $wd . "/bg/$name", 80);
        ImageDestroy($im);
        ImageDestroy($small);
    } else {
        move_uploaded_file($tempname, $wd . "/bg/$name");
    }
    chmod($wd . "/bg/$name", 0644);
}

Може пък да свърши на някой работа.

Забележка: При публикуването бях разместил двата коефициента. Сега е наред.