Ресайз изображений

Ресайз изображений

Функция ресайза изображений с нужными нам параметрами (размерами)



/**
     * @param string $target путь к оригинальному файлу
     * @param string $dest путь сохранения обработанного файла
     * @param string $wmax максимальная ширина
     * @param string $hmax максимальная высота
     * @param string $ext расширение файла
     */
    public static function resize($target, $dest, $wmax, $hmax, $ext){
        // Приведение к нужным размерам (что именно отсекаем у исходника, если пропорции не совпадают)
        // Узнать размеры оригинала
        list($w_orig, $h_orig) = getimagesize($target);
        
        // Сейчас будем выяснять что конкретно надо отрезать...
        $temp_width = $h_orig / $hmax * $wmax;
        $temp_height = $w_orig / $wmax * $hmax;

        // Это будет или ширина,
        if ($temp_width <= $w_orig) {
            $myWidth = $temp_width;
            $myHeight = $h_orig;
        }
        // Или высота
        if ($temp_height <= $h_orig) {
            $myWidth = $w_orig;
            $myHeight = $temp_height;
        }

        $img = "";
        // imagecreatefromjpeg | imagecreatefromgif | imagecreatefrompng
        switch($ext){
            case("gif"):
                $img = imagecreatefromgif($target);
                break;
            case("png"):
                $img = imagecreatefrompng($target);
                break;
            default:
                $img = imagecreatefromjpeg($target);
        }
        $newImg = imagecreatetruecolor($wmax, $hmax); // создаем оболочку для новой картинки

        if($ext == "png"){
            imagesavealpha($newImg, true); // сохранение альфа канала
            $transPng = imagecolorallocatealpha($newImg,0,0,0,127); // добавляем прозрачность
            imagefill($newImg, 0, 0, $transPng); // заливка
        }

        imagecopyresampled($newImg, $img, 0, 0, 0, 0, $wmax, $hmax, $myWidth, $myHeight); // копируем и ресайзим изображение
        switch($ext){
            case("gif"):
                imagegif($newImg, $dest);
                break;
            case("png"):
                imagepng($newImg, $dest);
                break;
            default:
                imagejpeg($newImg, $dest);
        }
        // Всё, избавляемся от мусора....
        imagedestroy($newImg);
        imagedestroy($img);
    }