Comur\ImageBundle\Controller\UploadController::resizeCropImage PHP Метод

resizeCropImage() приватный Метод

Crops or resizes image and writes it on disk
private resizeCropImage ( $destSrc, $imgSrc, $destX, $destY, $srcX, $srcY, $destW, $destH, $srcW, $srcH )
    private function resizeCropImage($destSrc, $imgSrc, $destX, $destY, $srcX, $srcY, $destW, $destH, $srcW, $srcH)
    {
        $type = strtolower(pathinfo($imgSrc, PATHINFO_EXTENSION));
        switch ($type) {
            case 'jpg':
            case 'jpeg':
                $srcFunc = 'imagecreatefromjpeg';
                $writeFunc = 'imagejpeg';
                $imageQuality = 100;
                break;
            case 'gif':
                $srcFunc = 'imagecreatefromgif';
                $writeFunc = 'imagegif';
                $imageQuality = null;
                break;
            case 'png':
                $srcFunc = 'imagecreatefrompng';
                $writeFunc = 'imagepng';
                $imageQuality = 9;
                break;
            default:
                return false;
        }
        $imgR = $srcFunc($imgSrc);
        if (round($srcW / $srcH, 2) != round($destW / $destH, 2)) {
            $destW = $srcW;
            $destH = $srcH;
        }
        $dstR = imagecreatetruecolor($destW, $destH);
        if ($type == 'png') {
            imagealphablending($dstR, false);
            imagesavealpha($dstR, true);
        }
        imagecopyresampled($dstR, $imgR, $destX, $destY, $srcX, $srcY, $destW, $destH, $srcW, $srcH);
        switch ($type) {
            case 'gif':
            case 'png':
                imagecolortransparent($dstR, imagecolorallocate($dstR, 0, 0, 0));
            case 'png':
                imagealphablending($dstR, false);
                imagesavealpha($dstR, true);
                break;
        }
        $writeFunc($dstR, $destSrc, $imageQuality);
    }