>백엔드 개발 >PHP 튜토리얼 >개인용으로 수정된 phpimageeditor

개인용으로 수정된 phpimageeditor

WBOY
WBOY원래의
2016-08-08 09:27:331018검색

下载组件phpimageeditor;
$ vim phpimageeditor/lite/shared/classes/phpimageeditor.php
覆盖
    class PHPImageEditor {
    var $srcEdit = "";
    var $name = "";
    var $srcOriginal = "";
    var $srcPng = "";
    var $srcWorkWith = "";
    var $urlWorkWith = "";
    var $resourceWorkWith = false;
    var $mimeType = "";
    var $actionSaveAndClose = "저장";
    var $actionRotateLeft = "rotate:90";
    var $actionRotateRight = "회전:- 90";
    var $actionGrayscale = "회색조";
    var $actionContrast = "대비";
    var $actionBrightness = "밝기";
    var $actionUndo = "실행 취소";
var $actionUpdate = "update";
    var $actionRotateIsSelected = false;
    var $actionRotate = "";
    var $actionSeparatorSign = "#";
    var $fieldNameKeepProportions = "keepproportions";
    var $errorMessages = array();
    var $formName = "phpimageeditor";
    var $inputWidth = -1;
    var $inputHeight = -1;
    var $inputCropLeft = 0;
    var $inputCropRight = 0;
    var $inputCropTop = 0;
    var $inputCropBottom = 0;
    var $inputKeepProportions = true;
    var $inputCropKeepProportions = false;
   var $ inputCropKeepProportionsRatio = 1;
    var $inputPanel = PIE_START_PANEL;
    var $inputLanguage = PIE_DEFAULT_LANGUAGE;
    var $inputContrast = 0;
    var $inputBrightness = 0;
   var $inputContrastLast = 0;
    var $inputBrightnessLast = 0;
    var $inputGrayscale = false;
    var $httpImageKey = "imagesrc";
    var $texts = array();
    var $actions = "";
    var $isPostBack = false;
    var $isAjaxPost = false;
    var $finalWidth = -1;
    var $finalHeight = -1;
    var $widthKeepProportions = -1;
var $heightKeepProportions = -1;
    var $userId = "";
    var $fonts = array();
    var $doSave = false;
    var $contrastMax = 100;
    var $brightnessMax = 255;
//    var $photoInfo = array();
   
    function PHPImageEditor() {
        $this->LoadLanguage();
        if (version_compare(phpversion() , PIE_PHP_VERSION_MINIMUM, "            $this->errorMessages[] = phpversion() . " " . $this->texts["이전 PHP 버전"] . " " . PIE_PHP_VERSION_MINIMUM;
            return;
        }
        $this->isPostBack = isset($_POST["actiontype"]);
        $srcEdit = "";
        if ($_GET [$이 ->httpImageKey] != NULL) {
            $l = DIRECTORY_SEPARATOR;
            $file = dirname(dirname(dirname(dirname(dirname(__FILE__))))) . "{$l}tmp{$l}{$_GET[$this->httpImageKey]}";
            #$srcEdit = Strip_tags($_GET[$this->httpImageKey]);
            $srcEdit = Strip_tags ($file);
        }
        if ($srcEdit == "") {
           $this->errorMessages[] = $this->texts["제공된 이미지 없음"];
            return ;
        }
        $this->srcEdit = urldecode($srcEdit);
        if (isset($_POST["userid"]))
           $this->userId = $_POST["userid "];
        else {
            $this->userId = "_" . str_replace(".", "_", $_SERVER['REMOTE_ADDR']);
            #Windows Vista의 가상 상자에는 ::가 IP로 표시됩니다.
            #오류를 방지하려면 제거하세요.
           $this->userId = str_replace("_::", "", $this->userId);
        }
        $this->SetSrcOriginal();
        $this->SetSrcPng( );
        $this->SetSrcWorkWith();
        if (!file_exists($this->srcEdit)) {
            $this->errorMessages[] = $this->texts["이미지는 그렇지 않습니다. 있음"];
            return;
        }
        $info = getimagesize($this->srcEdit);
        if (!$info) {
            $this->errorMessages[] = $ this->texts["잘못된 이미지 유형"];
            return;
        }
        $this->mimeType = image_type_to_mime_type($info[2]);
// echo image_type_to_mime_type($info[ 2])."===".image_type_to_mime_type(IMAGETYPE_JPEG);exit;
        if ($this->mimeType == image_type_to_mime_type(IMAGETYPE_JPEG) || $this->mimeType == image_type_to_mime_type(IMAGETYPE_GIF) || $this ->mimeType == image_type_to_mime_type(IMAGETYPE_PNG)) {
            if (!$this->isPostBack)
               $this->SaveOriginal();
           $this->resourceWorkWith = $this->CreateImage($ this->srcOriginal);
            $this->SavePng();
            copy($this->srcPng, $this->srcWorkWith);
           $this->resourceWorkWith = $this->CreateImage( $this->srcPng);
        }
        else {
            $this->errorMessages[] = $this->texts["잘못된 이미지 유형"];
            return;
        }
        $this->finalWidth = $this->GetWidth();
        $this->finalHeight = $this->GetHeight();
        $this->widthKeepProportions = $this->GetWidth();
        $this->heightKeepProportions = $this->GetHeight();
//        $this->photoInfo = $this->GetUserData();
        if ($this->isPostBack) {
            $this->actionRotateIsSelected = (strip_tags($_POST["rotate"]) != "-1");
            $this->actionRotate = Strip_tags($_POST["rotate"]);
           $ this->actions = Strip_tags($_POST["actions"]);
            $this->isAjaxPost = (strip_tags($_POST["isajaxpost"]) == "true");
            $this-> inputWidth = (int) Strip_tags($_POST["width"]);
            $this->inputHeight = (int) Strip_tags($_POST["height"]);
            $this->inputCropLeft = (int ) Strip_tags($_POST["cropleft"]);
            $this->inputCropRight = (int) Strip_tags($_POST["cropright"]);
            $this->inputCropTop = (int) Strip_tags($ _POST["croptop"]);
            $this->inputCropBottom = (int) Strip_tags($_POST["cropbottom"]);
           $this->inputPanel = (int) Strip_tags($_POST["panel "]);
            정의 >inputCropKeepProportions = (strip_tags($_POST["cropkeepproportionsval"]) == "1");
           $this->inputCropKeepProportionsRatio = (float) Strip_tags($_POST["cropkeepproportionsratio"]);
           $ 이것- >inputGrayscale = (strip_tags($_POST["grayscaleval"]) == "1");
           $this->inputBrightness = (int) Strip_tags($_POST["brightness"]);
            $this- >inputContrast = (int) Strip_tags($_POST["contrast"]);
            $this->inputBrightnessLast = (int) Strip_tags($_POST["brightnesslast"]);
           $this->inputContrastLast = ( int) Strip_tags($_POST["contrastlast"]);
            $this->Action(strip_tags($_POST["actiontype"]));
        }
    }
    function LoadLanguage() {
        $언어 = "";
        if (isset($_POST["언어"])) {
            $this->inputLanguage = $_POST["언어"];
            $언어 = $ this->inputLanguage;
        } else if (isset($_GET["언어"])) {
           $this->inputLanguage = $_GET["언어"];
            $언어 = $this- >inputLanguage;
        } else
            $언어 = PIE_DEFAULT_LANGUAGE;
        $tryLanguage = "언어/" . $언어 . ".ini";
        if (file_exists($tryLanguage))
           $this->texts = PIE_GetTexts("언어/" . $언어 . ".ini");
        else
            $this ->texts = PIE_GetTexts("언어/" . PIE_DEFAULT_LANGUAGE . ".ini");
        //현재 언어에 존재하지 않는 텍스트를 영어에서 로드합니다.
        $texts = PIE_GetTexts("언어/en- GB.ini");
        foreach ($texts as $key => $text) {
            if (array_key_exists($key, $this->texts) === false)
               $this-> texts[$key] = $text;
        }
    }
    function SetSrcOriginal() {
        $arr =Explode("/", $this->srcEdit);
        $this- >srcOriginal = PIE_IMAGE_ORIGINAL_PATH . $this->AddUserIdToImageSrc($arr[count($arr) - 1]);
    }
    function SetSrcWorkWith() {
        $arr =Explode("/", $this->srcEdit);
        $srcWorkWith = PIE_IMAGE_WORK_WITH_PATH . $this->AddUserIdToImageSrc($arr[count($arr) - 1]);
        $srcWorkWith = substr($srcWorkWith, 0, strripos($srcWorkWith, ".")) . ".png";
        $this->srcWorkWith = $srcWorkWith;
        //        $this->urlWorkWith = $this->isAjaxPost && $_POST['actiontype'] == $this->actionSaveAndClose
        //             ? "http://".str_replace(DIRECTORY_SEPARATOR,"/",str_replace(DOC_ROOT,$_SERVER['SERVER_NAME'],$this->srcEdit))
        //            : "http://".str_replace(DIRECTORY_SEPARATOR ,"/",str_replace(DOC_ROOT,$_SERVER['SERVER_NAME'],$srcWorkWith))
        //             ;
        if ($_POST['actiontype'] == $this->actionSaveAndClose) {
            $this->urlWorkWith = "http://" . str_replace(DIRECTORY_SEPARATOR, "/", str_replace(DOC_ROOT, $_SERVER['SERVER_NAME'], $this->srcEdit));
           #              echo "Ajax:{$this->urlWorkWith}";
        } else {
            $this->urlWorkWith = "http://" . str_replace(DIRECTORY_SEPARATOR, "/", str_replace(DOC_ROOT, $_SERVER['SERVER_NAME'], $srcWorkWith));
           #            echo "noAjax:{$this->urlWorkWith}";
        }
    }
    함수 SetSrcPng() {
        $arr = 폭발("/", $this->srcEdit);
        $srcPng = PIE_IMAGE_PNG_PATH . $this->AddUserIdToImageSrc($arr[count($arr) - 1]);
        $srcPng = substr($srcPng, 0, strripos($srcPng, ".")) . ".png";
        $this->srcPng = $srcPng;
    }
    function SaveOriginal() {
        copy($this->srcEdit, $this->srcOriginal);
#최대 너비/높이에 맞게 크기를 조정합니다.
        $imageTmp = $this->CreateImage($this->srcOriginal);
        $finalWidth = $this->GetWidthFromImage($imageTmp);
        $finalHeight = $this->GetHeightFromImage($imageTmp);
        $doSave = false;
        if ($finalWidth > PIE_IMAGE_MAX_WIDTH) {
           $widthProp = PIE_IMAGE_MAX_WIDTH / $finalWidth;
            $finalWidth = PIE_IMAGE_MAX_WIDTH;
           $finalHeight = round($finalHeight * $widthProp);
           $doSave = true;
        }
        if ($finalHeight > PIE_IMAGE_MAX_HEIGHT) {
           $heightProp = PIE_IMAGE_MAX_HEIGHT / $finalHeight;
> ave) {
            $imageTmp = $this ->ActionResize($finalWidth, $finalHeight, $imageTmp);
            $this->SaveImage($imageTmp, $this->srcOriginal);
        }
    }
    function SavePng() {
        $this->SaveImage($this->resourceWorkWith, $this->srcPng, image_type_to_mime_type(IMAGETYPE_PNG));
    }
    function ErrorHasOccurred() {
        return (count($this->errorMessages ) > 0);
    }
    function GetWidthFinal() {
        return $this->finalWidth;
    }
    function GetHeightFinal() {
        return $this->finalHeight;
    }
    function GetWidth() {
        return $this->GetWidthFromImage($this->resourceWorkWith);
    }
    function GetWidthLast() {
        if ($this->isPostBack )
            return (int) $_POST["widthlast"];
        return $this->GetWidth();
    }
    function GetHeight() {
        return $this->GetHeightFromImage($this->resourceWorkWith);
    }
    function GetHeightLast() {
        if ($this->isPostBack)
            return ( int) $_POST["heightlast"];
        return $this->GetWidth();
    }
    function GetWidthFromImage($image) {
        return Imagesx($image);
    }
    function GetHeightFromImage($image) {
        return imagey($image);
    }
    function Action($actionType) {
        $this->doSave = false;
        if ( $actionType == $this->actionUndo) {
            $this->ActionUndo();
           $this->doSave = true;
        }
        if ($actionType == $this-> actionUpdate || $actionType == $this->actionSaveAndClose) {
            if ($this->inputWidth != $this->GetWidthLast() || $this->inputHeight != $this->GetHeightLast())
                $this->actions .= $this->GetActionSeparator() . "크기 조정:" . $this->inputWidth . "," . $this->inputHeight;
            if ($this->inputCropLeft != 0 || $this->inputCropRight != 0 || $this->inputCropTop != 0 || $this->inputCropBottom != 0)
                $this->actions .= $this->GetActionSeparator() . "자르기:" . $this->inputCropLeft . "," . $this->inputCropRight . "," . $this->inputCropTop . "," . $this->inputCropBottom;
            $this->doSave = true;
        }
        if ($actionType == $this->actionUpdate && $this->inputGrayscale) {
            if (strpos( $this->actions, $this->actionGrayscale) === false) {
                $this->actions .= $this->GetActionSeparator() . $this->actionGrayscale . ":0";
                $this->doSave = true;
            }
        } else if ($actionType == $this->actionUpdate && !$this->inputGrayscale) {
            if ( !(strpos($this->actions, $this->actionGrayscale) === false)) {
                $this->actions = str_replace($this->actionGrayscale . ":0" . $this->GetActionSeparator (), "", $this->actions);
                $this->actions = str_replace($this->GetActionSeparator() . $this->actionGrayscale . ":0", "", $this-> actions);
               $this->actions = str_replace($this->actionGrayscale . ":0", "", $this->actions);
               $this->doSave = true;
            }
        }
        if ($this->inputContrast != $this->inputContrastLast) {
            $this->actions .= $this->GetActionSeparator() . $this->actionContrast . ":" . $this->inputContrast;
            $this->doSave = true;
        }
        if ($this->inputBrightness != $this->inputBrightnessLast) {
            $this->actions .= $this->GetActionSeparator() . $this->actionBrightness . ":" . $this->inputBrightness;
            $this->doSave = true;
        }
        if ($this->actionRotateIsSelected) {
            if ($this->actionRotate == $this->actionRotateLeft) {
               $this->actions .= $this->GetActionSeparator() . $this->actionRotateLeft;
                $this->doSave = true;
           } else if ($this->actionRotate == $this->actionRotateRight) {
               $this-> actions .= $this ->GetActionSeparator() . $this->actionRotateRight;
               $this->doSave = true;
            }
        }
        $finalContrast = 0;
        $finalBrightness = 0;
        $finalContrastFound = false;
8 , $this->actions);
            $finalRotate = 0;
            $finalCropLeft = 0;
           $finalCropRight = 0;
            $finalCropTop = 0;
            $finalCropBottom = 0;
            $doSwitch = false;
            foreach ($allActions as $loopAction) {
               $actionDetail =explore(":", $loopAction);
               $actionValues ​​=explore(",", 상세정보[1 ]);
if ($ actionDetail [0] == "resize") { $ this-> finalWidth = (int) $ actionValues ​​[0]; $ this-> finalHeight = (int) 정의 정수) $ actionValues[1];
                   $actionValueTop = (int) $actionValues[2];
                  $actionValueBottom = (int) $actionValues[3];
                   $widthProp = 1 ;
                    $heightProp = 1 ;
                   if ($doSwitch) {
                     $widthProp = (($this->GetHeight() - ($finalCropTop + $finalCropBottom)) / $this->finalWidth);
                        $heightProp = (( $this->GetWidth() - ($finalCropLeft + $finalCropRight)) / $this->finalHeight);
                  } else {
                        $widthProp = (($this->GetWidth() - ($finalCropLeft + $finalCropRight)) / $this->finalWidth);
                     $heightProp = (($this->GetHeight() - ($finalCropTop + $ finalCropBottom)) / $this->finalHeight);
                   }
                 $cropLeft = $actionValueLeft * $widthProp;
                  $cropRight = $actionValueRight * $widthProp;
                    $cropTop = $actionValueTop * $heightProp ;
                   $cropBottom = $actionValueBottom * $heightProp;
                  $cropValues ​​= array();
                   $cropValues[] = $cropRight;
                   $cropValues[] = $cropBottom;
                   $cropValues [] = $cropLeft;
                   $cropValues[] = $cropTop;
                 if ($finalRotate != 0)
                      $cropValues ​​= $this- >RotateArray(($finalRotate / -90), $cropValues );
                   $finalCropRight += $cropValues[0];
                  $finalCropBottom += $cropValues[1];
                  $finalCropLeft += pValues[2];
                   $finalCropTop += $cropValues [3];
                   $this->finalWidth -= ($actionValueLeft + $actionValueRight);
                 $this->finalHeight -= ($actionValueTop + $actionValueBottom);
              }
                else if ( $actionDetail[0] == $this->actionGrayscale && $this->inputGrayscale) {
                   $finalGrayscale = true;
              } else if ($actionDetail[0] == "대비") {
정의 = true;
                    $finalBrightness = $actionValues[0];
               } else if ($actionDetail[0] == "회전") {
                  $finalRotate += (int) $actionValues[0];
                    정의
                if ($finalRotate == - 360 || $finalRotate == 360)
                   $finalRotate = 0;
               $doSwitch = ($finalRotate != 0 && ($finalRotate == 90 || $finalRotate == 270 || $finalRotate == - 90 || $finalRotate == -270));
            }
            //1. 모든 효과.
            if ($finalGrayscale)
               $this->ActionGrayscale();
           if ($finalBrightnessFound)
               $this->ActionBrightness($finalBright ness);
            if ($finalContrastFound )
                $this->ActionContrast($finalContrast * -1);
            //2. 자르기를 수행하세요.
            $finalCropLeft = round($finalCropLeft);
            $finalCropRight = round($finalCropRight);
            $finalCropTop = round($finalCropTop);
           $final CropBottom = 라운드($finalCropBottom) ;
            if ($finalCropLeft != 0 || $finalCropRight != 0 || $finalCropTop != 0 || $finalCropBottom != 0)
               $this->ActionCrop($finalCropLeft, $finalCropRight, $finalCropTop , $finalCropBottom);
            //3. 회전
            if ($finalRotate != 0)
               $this->ActionRotate($finalRotate);
            //유지 비율 값을 계산합니다.
            if (round($this->finalW 아이디 / $this ->finalHeight, 1) == round($this->GetWidth() / $this->GetHeight(), 1)) {
               //원본과 비율이 같은 것 같습니다. 원래 비율 값을 사용합니다.
               $this->widthKeepProportions = $this->GetWidth();
               $this->heightKeepProportions = $this->GetHeight();
          } else {
                / /비율이 변경되었습니다. 대신 새로운 너비와 높이를 사용하세요.
               $this->widthKeepProportions = $this->finalWidth;
               $this->heightKeepProportions = $this->finalHeight;
           }
            //4. 크기 조정
            if ($this->finalWidth > 0 && $this->finalHeight > 0)
               $this->resourceWorkWith = $this->ActionResize($this->finalWidth, $this->finalHeight, $ this->resourceWorkWith);
            $this->SaveImage($this->resourceWorkWith, $this->srcWorkWith, image_type_to_mime_type(IMAGETYPE_PNG));
        }
        $this->inputBrightness = $finalBrightness;
        $this->inputContrast = $ finalContrast;
        $this->inputGrayscale = $finalGrayscale;
        if ($actionType == $this->actionSaveAndClose) {
            $this->SaveImage($this->resourceWorkWith, $this->srcEdit , $this->mimeType);
            연결 해제($this->srcOriginal);
            연결 해제($this->srcPng);
            연결 해제($this->srcWorkWith);
           PIE_De leteOldImages(PIE_IMAGE_ORIGINAL_PATH );
            PIE_DeleteOldImages(PIE_IMAGE_PNG_PATH);
            PIE_DeleteOldImages(PIE_IMAGE_WORK_WITH_PATH);
           $reloadParentBrowser = PIE_RELOAD_PARENT_BROWSER_ON _저장 ? 'window.opener.location.reload();' : '';
// PIE_Echo('
');
        }
    }
    function ActionResize($width, $height, $image) {
        $newImage = @imagecreatetruecolor ($width, $height);
        PIE_KeepTranspacecyCopyResampled($newImage, $this->mimeType);
        imagecopyresampled($newImage, $image, 0, 0, 0, 0, $width, $height, $this ->GetWidthFromImage($image), $this->GetHeightFromImage($image));
        return $newImage;
    }
    function ActionCrop($cropLeft, $cropRight, $cropTop, $cropBottom) {
        $cropWidth = $this->GetWidth() - $cropLeft - $cropRight;
        $cropHeight = $this->GetHeight() - $cropTop - $cropBottom;
        $newImageCropped = @imagecreatetruecolor($cropWidth , $cropHeight);
        PIE_KeepTranspacecyCopyResampled($newImageCropped, $this->mimeType);
        //imagecopy($newImageCropped, $this->resourceWorkWith, 0, 0, $cropLeft, $cropTop, $cropWidth, $ 자르기높이);
        imagecopyresampled($newImageCropped, $this->resourceWorkWith, 0, 0, $cropLeft, $cropTop, $cropWidth, $cropHeight, $cropWidth, $cropHeight);
        $this->resourceWorkWith = $newImageCropped;
    }
    function ActionUndo() {
        $separatorPos = strrpos($this->actions, $this->actionSeparatorSign);
        if (!($separatorPos === false)) {
            $this->actions = substr($this->actions, 0, $separatorPos);
        } else {
            $this->actions = "";
       }
    }
function CreateImage($srcEdit) {
        $info = getimagesize($srcEdit);
        if (!$info)
            return NULL;
        $mimeType = image_type_to_mime_type($info[2]);
        if ($mimeType == image_type_to_mime_type(IMAGETYPE_JPEG)) {
            return imagecreatefromjpeg($srcEdit);
        } else if ($mimeType == image_type_to_mime_type(IMAGETYPE_GIF)) {
            imagecreatefromgif($srcEdit) 반환 ;
        } else if ($mimeType == image_type_to_mime_type(IMAGETYPE_PNG)) {
            return imagecreatefrompng($srcEdit);
        }
        NULL 반환;    }
    function ActionRotate($Degrees) {
        if (function_exists('imagerotate'))
            $this->resourceWorkWith = imagerotate($this->resourceWorkWith, $Degrees, 0);
        else
           $this->resourceWorkWith = PIE_ImageRotate($this->resourceWorkWith, $Degrees);
        if ($this->mimeType == image_type_to_mime_type(IMAGETYPE_GIF) || $this->mimeType == image_type_to_mime_type(IMAGETYPE_PNG) ) {
            //투명성 유지
            imagealphablending($this->resourceWorkWith, true);
           Imagesavealpha($this->resourceWorkWith, true);
        }
    }
    함수 ActionGrayscale () {
        if (function_exists('imagefilter'))
            imagefilter($this->resourceWorkWith, IMG_FILTER_GRAYSCALE);
        else
            PIE_Grayscale($this->resourceWorkWith);
    }
    function ActionContrast($contrast) {
        //-100 = 최대 대비, 0 = 변경 없음, +100 = 최소 대비
        if (function_exists('imagefilter'))
            imagefilter($this- >resourceWorkWith, IMG_FILTER_CONTRAST, $contrast);
        else
            PIE_Contrast($this->resourceWorkWith, $contrast);
    }
    함수 ActionBrightness($light) {
        //-25 5 = 최소 밝기, 0 = 변경 없음, +255 = 최대 밝기
        if (function_exists('imagefilter'))
            imagefilter($this->resourceWorkWith, IMG_FILTER_BRIGHTNESS, $light);
        else
           PIE_Bright 네스 ($this->resourceWorkWith, $light);
    }
    function GetErrorMessages() {
        if (count($this->errorMessages)) {
           PIE_Echo('

');
            PIE_Echo('
    ');
                foreach ($this->errorMessages as $errorMessage)
                   PIE_Echo('
  • ' . $오류메시지 . '
  • ');
                PIE_Echo("
");
            PIE_Echo('
');
        }
    }
    function GetActions() {
        PIE_Echo($this->actions);
    }
    function GetActionSeparator() {
        if ($this ->actions != "")
            return $this->actionSeparatorSign;
        return "";
    }
    function SaveImage($image, $toSrc, $mimeType = -1) {
        if ($mimeType == -1)
            $mimeType = $this->mimeType;
        if ($mimeType == image_type_to_mime_type(IMAGETYPE_JPEG)) {
            imagejpeg($image, $toSrc);
        } else if ($mimeType == image_type_to_mime_type(IMAGETYPE_GIF)) {
            imagegif($image, $toSrc);
        } else if ($mimeType == image_type_to_mime_type(IMAGETYPE_PNG) {
            // Transparecy를 유지하십시오. imagesavealpha ($ image, true);
imagepng ($ image, $ toSrc);
}
}
function cleanup () {
if ($ this- >resourceWorkWith)
            imagedestroy($this->resourceWorkWith);
    }
    function RotateArray($numberOfSteps, $arr) {
        $finalArray = array();
        //-3 ~ 3
        $finalArray[] = $arr[$this->NumberOfStepsCalculator($numberOfSteps + 0)];
        $finalArray[] = $arr[$this->NumberOfStepsCalculator($numberOfSteps + 1)];
        $finalArray[] = $arr[$this->NumberOfStepsCalculator($numberOfSteps + 2)];
        $finalArray[] = $arr[$this->NumberOfStepsCalculator($numberOfSteps + 3)];
return $finalArray;
    }
    function NumberOfStepsCalculator($sum) {
        $maxIndex = 3;
        if ($sum > $maxIndex)
            return ($sum - $maxIndex) - 1 ;
        else if ($sum             return ($sum + $maxIndex) + 1;        }
        return $sum;
    }
    함수 AddUserIdToImageSrc($imageSrc ) {
        $name = end(explode(DIRECTORY_SEPARATOR, $imageSrc));
        $this->name = $name;
        $ext = end(explode('.', $name));
        $p = strlen($ext) + 1;
        $f = str_replace(substr($imageSrc, -$p), "{$this->userId}.{$ext}", $name) ;
        $f 반환;
    }
    function GetFormAction() {
        $joomlaIsAdmin = isset($_GET['isadmin']) ? 'isadmin=' . $_GET['isadmin'] . '&' : '';
        #return "index.php?".$joomlaIsAdmin.$this->httpImageKey."=".urlencode($this->srcEdit);
        return "index.php? " . $joomlaIsAdmin . $this->httpImageKey . "=" . urlencode($this->name);
    }
    function GetWidthKeepProportions() {
        return $this->widthKeepProportions;
    }
    function GetHeightKeepProportions() {
        return $this- >heightKeepProportions;
    }
$ vim phpimageeditor/lite/shared/index.php
覆盖:
    ini_set('default_charset', 'utf-8');   
header("Cache-Control: no-store");
header('content-type: text/html; charset: utf-8');
include 'lite/shared/config.php';
include 'lite/shared/includes/constants.php';
include 'lite/shared/includes/functions.php';
include 'lite/shared/classes/phpimageeditor.php';
global $objPHPImageEditor;
$objPHPImageEditor = new PHPImageEditor();
    if (!$objPHPImageEditor->isAjaxPost) { ?>



PHP Image Editor
   
   
       
   
       
       
   
   
   
   
   
   

       





ErrorHasOccurred()) { ?>



">

texts["RESIZE IMAGE"]); ?>





">

texts["ROTATE IMAGE"]); ?>








">

texts["EFFECTS"]); ?>











                                                                                                         














inputKeepProportions ? 'checked="checked"' : ''); ?>/>





texts["INSTRUCTIONS"]); ?>

texts["RESIZE HELP"]); ?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.