Home  >  Article  >  Backend Development  >  phpimageeditor modified for personal use

phpimageeditor modified for personal use

WBOY
WBOYOriginal
2016-08-08 09:27:33973browse

下载组件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 = "save";
    var $actionRotateLeft = "rotate:90";
    var $actionRotateRight = "rotate:-90";
    var $actionGrayscale = "grayscale";
    var $actionContrast = "contrast";
    var $actionBrightness = "brightness";
    var $actionUndo = "undo";
    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["OLD PHP VERSION"] . " " . PIE_PHP_VERSION_MINIMUM;
            return;
        }
        $this->isPostBack = isset($_POST["actiontype"]);
        $srcEdit = "";
        if ($_GET[$this->httpImageKey] != NULL) {
            $l = DIRECTORY_SEPARATOR;
            $file = 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["NO PROVIDED IMAGE"];
            return;
        }
        $this->srcEdit = urldecode($srcEdit);
        if (isset($_POST["userid"]))
            $this->userId = $_POST["userid"];
        else {
            $this->userId = "_" . str_replace(".", "_", $_SERVER['REMOTE_ADDR']);
            #In my Virtual box in Windows Vista I'll get :: as ip.
            #Remove it to avoid errors.
            $this->userId = str_replace("_::", "", $this->userId);
        }
        $this->SetSrcOriginal();
        $this->SetSrcPng();
        $this->SetSrcWorkWith();
        if (!file_exists($this->srcEdit)) {
            $this->errorMessages[] = $this->texts["IMAGE DOES NOT EXIST"];
            return;
        }
        $info = getimagesize($this->srcEdit);
        if (!$info) {
            $this->errorMessages[] = $this->texts["INVALID IMAGE TYPE"];
            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["INVALID IMAGE TYPE"];
            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"]);
            $this->inputLanguage = strip_tags($_POST["language"]);
            $this->inputKeepProportions = (strip_tags($_POST["keepproportionsval"]) == "1");
            $this->inputCropKeepProportions = (strip_tags($_POST["cropkeepproportionsval"]) == "1");
            $this->inputCropKeepProportionsRatio = (float) strip_tags($_POST["cropkeepproportionsratio"]);
            $this->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() {
        $language = "";
        if (isset($_POST["language"])) {
            $this->inputLanguage = $_POST["language"];
            $language = $this->inputLanguage;
        } else if (isset($_GET["language"])) {
            $this->inputLanguage = $_GET["language"];
            $language = $this->inputLanguage;
        } else
            $language = PIE_DEFAULT_LANGUAGE;
        $tryLanguage = "language/" . $language . ".ini";
        if (file_exists($tryLanguage))
            $this->texts = PIE_GetTexts("language/" . $language . ".ini");
        else
            $this->texts = PIE_GetTexts("language/" . PIE_DEFAULT_LANGUAGE . ".ini");
        //Load the texts that not exists in the current langugare from english.
        $texts = PIE_GetTexts("language/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}";
        }
    }
    function SetSrcPng() {
        $arr = explode("/", $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);
        #Resize to fit in max width/height.
        $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;
            $finalHeight = PIE_IMAGE_MAX_HEIGHT;
            $finalWidth = round($finalWidth * $heightProp);
            $doSave = true;
        }
        if ($doSave) {
            $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 imagesy($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() . "resize:" . $this->inputWidth . "," . $this->inputHeight;
            if ($this->inputCropLeft != 0 || $this->inputCropRight != 0 || $this->inputCropTop != 0 || $this->inputCropBottom != 0)
                $this->actions .= $this->GetActionSeparator() . "crop:" . $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;
        $finalBrightnessFound = false;
        $finalGrayscale = false;
        if ($this->doSave && $this->actions != "") {
            $allActions = explode($this->actionSeparatorSign, $this->actions);
            $finalRotate = 0;
            $finalCropLeft = 0;
            $finalCropRight = 0;
            $finalCropTop = 0;
            $finalCropBottom = 0;
            $doSwitch = false;
            foreach ($allActions as $loopAction) {
                $actionDetail = explode(":", $loopAction);
                $actionValues = explode(",", $actionDetail[1]);
                if ($actionDetail[0] == "resize") {
                    $this->finalWidth = (int) $actionValues[0];
                    $this->finalHeight = (int) $actionValues[1];
                } else if ($actionDetail[0] == "crop") {
                    $actionValueLeft = (int) $actionValues[0];
                    $actionValueRight = (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 += $cropValues[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] == "contrast") {
                    $finalContrastFound = true;
                    $finalContrast = $actionValues[0];
                } else if ($actionDetail[0] == "brightness") {
                    $finalBrightnessFound = true;
                    $finalBrightness = $actionValues[0];
                } else if ($actionDetail[0] == "rotate") {
                    $finalRotate += (int) $actionValues[0];
                    $finalWidthTmp = $this->finalWidth;
                    $this->finalWidth = $this->finalHeight;
                    $this->finalHeight = $finalWidthTmp;
                }
                if ($finalRotate == -360 || $finalRotate == 360)
                    $finalRotate = 0;
                $doSwitch = ($finalRotate != 0 && ($finalRotate == 90 || $finalRotate == 270 || $finalRotate == -90 || $finalRotate == -270));
            }
            //1. All effects.
            if ($finalGrayscale)
                $this->ActionGrayscale();
            if ($finalBrightnessFound)
                $this->ActionBrightness($finalBrightness);
            if ($finalContrastFound)
                $this->ActionContrast($finalContrast * -1);
            //2. Do cropping.
            $finalCropLeft = round($finalCropLeft);
            $finalCropRight = round($finalCropRight);
            $finalCropTop = round($finalCropTop);
            $finalCropBottom = round($finalCropBottom);
            if ($finalCropLeft != 0 || $finalCropRight != 0 || $finalCropTop != 0 || $finalCropBottom != 0)
                $this->ActionCrop($finalCropLeft, $finalCropRight, $finalCropTop, $finalCropBottom);
            //3. Rotate
            if ($finalRotate != 0)
                $this->ActionRotate($finalRotate);
            //Calculate keep proportions values.
            if (round($this->finalWidth / $this->finalHeight, 1) == round($this->GetWidth() / $this->GetHeight(), 1)) {
                //It seems to have the same proportions as the original. Use the original proportions value.
                $this->widthKeepProportions = $this->GetWidth();
                $this->heightKeepProportions = $this->GetHeight();
            } else {
                //The proportions has been changed. Use the new width and height instead.
                $this->widthKeepProportions = $this->finalWidth;
                $this->heightKeepProportions = $this->finalHeight;
            }
            //4. Resize
            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);
            unlink($this->srcOriginal);
            unlink($this->srcPng);
            unlink($this->srcWorkWith);
            PIE_DeleteOldImages(PIE_IMAGE_ORIGINAL_PATH);
            PIE_DeleteOldImages(PIE_IMAGE_PNG_PATH);
            PIE_DeleteOldImages(PIE_IMAGE_WORK_WITH_PATH);
            $reloadParentBrowser = PIE_RELOAD_PARENT_BROWSER_ON_SAVE ? '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, $cropHeight);
        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)) {
            return imagecreatefromgif($srcEdit);
        } else if ($mimeType == image_type_to_mime_type(IMAGETYPE_PNG)) {
            return imagecreatefrompng($srcEdit);
        }
        return 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)) {
            //Keep transparecy
            imagealphablending($this->resourceWorkWith, true);
            imagesavealpha($this->resourceWorkWith, true);
        }
    }
    function ActionGrayscale() {
        if (function_exists('imagefilter'))
            imagefilter($this->resourceWorkWith, IMG_FILTER_GRAYSCALE);
        else
            PIE_Grayscale($this->resourceWorkWith);
    }
    function ActionContrast($contrast) {
        //-100 = max contrast, 0 = no change, +100 = min contrast
        if (function_exists('imagefilter'))
            imagefilter($this->resourceWorkWith, IMG_FILTER_CONTRAST, $contrast);
        else
            PIE_Contrast($this->resourceWorkWith, $contrast);
    }
    function ActionBrightness($light) {
        //-255 = min brightness, 0 = no change, +255 = max brightness
        if (function_exists('imagefilter'))
            imagefilter($this->resourceWorkWith, IMG_FILTER_BRIGHTNESS, $light);
        else
            PIE_Brightness($this->resourceWorkWith, $light);
    }
    function GetErrorMessages() {
        if (count($this->errorMessages)) {
            PIE_Echo('

');
            PIE_Echo('
    ');
                foreach ($this->errorMessages as $errorMessage)
                    PIE_Echo('
  • ' . $errorMessage . '
  • ');
                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)) {
            //Keep transparecy.
            imagesavealpha($image, true);
            imagepng($image, $toSrc);
        }
    }
    function CleanUp() {
        if ($this->resourceWorkWith)
            imagedestroy($this->resourceWorkWith);
    }
    function RotateArray($numberOfSteps, $arr) {
        $finalArray = array();
        //-3 to 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;
    }
    function 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);
        return $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"]); ?>



                                                       
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn