메뉴 건너뛰기

Dev tips

PHP [gd] image_filter 이미지 흑백 처리

taknim 2017.03.15 18:34 조회 수 : 12

    /**
     * 이미지 흑백처리
     * @param  [type] $fileName    [description]
     * @return [type]            [description]
     */
    public function saveGrayScaleImage($fileName){

        $result = false;
        $changeName = "";
        $fileext = strpos($fileName,'.')===false?'':substr(strrchr($fileName, "."), 1);
        $filenameonly = substr($fileName, 0, strlen($fileName)-strlen($fileext)-1);
        $filepath = dirname(dirname(BASEPATH).'..')."/".SAVE_DIR_FILES;

        // image새로 생성
        switch(strtolower($fileext)){
            case "png":
                $originFile = imagecreatefrompng($filepath."/".$fileName);
                imagealphablending($originFile, FALSE);
                imagesavealpha($originFile, TRUE);
                break;
            case "gif":
                $originFile = imagecreatefromgif($filepath."/".$fileName);
                break;
            case "jpg":
            case "jpeg":
            default:
                $originFile = imagecreatefromjpeg($filepath."/".$fileName);
                break;
        }

        // 흑백으로 처리 후 저장
        if($originFile && imagefilter($originFile, IMG_FILTER_GRAYSCALE))
        {
            $changeName = $filepath.$filenameonly."_gray.".$fileext;

            switch(strtolower($fileext)){
                case "png":
                    //echo $changeName;
                    $result = imagepng($originFile, $changeName);
                    break;
                case "gif":
                    $result = imagegif($originFile, $changeName);
                    break;
                case "jpg":
                case "jpeg":
                default:
                    $result = imagejpeg($originFile, $changeName);
                    break;
            }
            if(!$result){
                $changeName =  "";
            }
        }
        return $changeName;
    }