⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gd.php

📁 完美的在线教育系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
        imagepalettecopy($img2,$img);        $mask   = imagecolorresolve($img2,$color_mask[0],$color_mask[1],$color_mask[2]);        // use simple lines copy for axes angles        switch((int)($angle)){            case 0:                imagefill ($img2, 0, 0,$mask);                for ($y=0; $y < $max_y; $y++) {                    for ($x = $min_x; $x < $max_x; $x++){                        $c  = @imagecolorat ( $img, $x, $y);                        imagesetpixel($img2,$x+$x_offset,$y+$y_offset,$c);                    }                }                break;            case 90:                imagefill ($img2, 0, 0,$mask);                for ($x = $min_x; $x < $max_x; $x++){                    for ($y=$min_y; $y < $max_y; $y++) {                        $c  = imagecolorat ( $img, $x, $y);                        imagesetpixel($img2,$max_y-$y-1,$x,$c);                    }                }                break;            case 180:                imagefill ($img2, 0, 0,$mask);                for ($y=0; $y < $max_y; $y++) {                    for ($x = $min_x; $x < $max_x; $x++){                        $c  = @imagecolorat ( $img, $x, $y);                        imagesetpixel($img2, $max_x2-$x-1, $max_y2-$y-1, $c);                    }                }                break;            case 270:                imagefill ($img2, 0, 0,$mask);                for ($y=0; $y < $max_y; $y++) {                    for ($x = $max_x; $x >= $min_x; $x--){                        $c  = @imagecolorat ( $img, $x, $y);                        imagesetpixel($img2,$y,$max_x-$x-1,$c);                    }                }                break;            // simple reverse rotation algo            default:                $i=0;                for ($y = $min_y2; $y < $max_y2; $y++){                    // Algebra :)                    $x2 = round((($min_x2-$x1) * $cosT) + (($y-$y1) * $sinT + $x1),0);                    $y2 = round((($y-$y1) * $cosT - ($min_x2-$x1) * $sinT + $y1),0);                    for ($x = $min_x2; $x < $max_x2; $x++){                        // Check if we are out of original bounces, if we are                        // use the default color mask                        if ( $x2>=0 && $x2<$max_x && $y2>=0 && $y2<$max_y ){                            $c  = imagecolorat ( $img, $x2, $y2);                        } else {                            $c  = $mask;                        }                        imagesetpixel($img2,$x+$x_offset,$y+$y_offset,$c);                        // round verboten!                        $x2  += $cosT;                        $y2  -= $sinT;                    }                }                break;        }        $this->old_image    = $this->imageHandle;        $this->imageHandle  =  $img2;        return true;    }   /**    * Resize Action    *    * For GD 2.01+ the new copyresampled function is used    * It uses a bicubic interpolation algorithm to get far    * better result.    *    * @param $new_x int  new width    * @param $new_y int  new height    *    * @return true on success or pear error    * @see PEAR::isError()    */    function _resize($new_x, $new_y) {        if ($this->resized === true) {            return false; /*PEAR::raiseError('You have already resized the image without saving it.  Your previous resizing will be overwritten', null, PEAR_ERROR_TRIGGER, E_USER_NOTICE);*/        }        if(function_exists('ImageCreateTrueColor')){            $new_img =ImageCreateTrueColor($new_x,$new_y);        } else {            $new_img =ImageCreate($new_x,$new_y);        }        if(function_exists('ImageCopyResampled')){            ImageCopyResampled($new_img, $this->imageHandle, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y);        } else {            ImageCopyResized($new_img, $this->imageHandle, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y);        }        $this->old_image = $this->imageHandle;        $this->imageHandle = $new_img;        $this->resized = true;        $this->new_x = $new_x;        $this->new_y = $new_y;        return true;    }    /**     * Crop the image     *     * @param int $crop_x left column of the image     * @param int $crop_y top row of the image     * @param int $crop_width new cropped image width     * @param int $crop_height new cropped image height     */    function crop($new_x, $new_y, $new_width, $new_height)     {        if(function_exists('ImageCreateTrueColor')){            $new_img =ImageCreateTrueColor($new_width,$new_height);        } else {            $new_img =ImageCreate($new_width,$new_height);        }        if(function_exists('ImageCopyResampled')){            ImageCopyResampled($new_img, $this->imageHandle, 0, 0, $new_x, $new_y,$new_width,$new_height,$new_width,$new_height);        } else {            ImageCopyResized($new_img, $this->imageHandle, 0, 0, $new_x, $new_y, $new_width,$new_height,$new_width,$new_height);        }        $this->old_image = $this->imageHandle;        $this->imageHandle = $new_img;        $this->resized = true;        $this->new_x = $new_x;        $this->new_y = $new_y;        return true;    }       /**     * Flip the image horizontally or vertically     *     * @param boolean $horizontal true if horizontal flip, vertical otherwise     */    function flip($horizontal)    {        if(!$horizontal) {            $this->rotate(180);        }        $width = imagesx($this->imageHandle);         $height = imagesy($this->imageHandle);         for ($j = 0; $j < $height; $j++) {                 $left = 0;                 $right = $width-1;                 while ($left < $right) {                     //echo " j:".$j." l:".$left." r:".$right."\n<br>";                    $t = imagecolorat($this->imageHandle, $left, $j);                     imagesetpixel($this->imageHandle, $left, $j, imagecolorat($this->imageHandle, $right, $j));                     imagesetpixel($this->imageHandle, $right, $j, $t);                     $left++; $right--;                 }                     }        return true;    }    /**     * Adjust the image gamma     *     * @param float $outputgamma     *     * @return none     */    function gamma($outputgamma=1.0) {        ImageGammaCorrect($this->imageHandle, 1.0, $outputgamma);    }    /**     * Save the image file     *     * @param $filename string  the name of the file to write to     * @param $quality  int     output DPI, default is 85     * @param $types    string  define the output format, default     *                          is the current used format     *     * @return none     */    function save($filename, $type = '', $quality = 85)    {		$type           = $type==''? $this->type : $type;		$functionName   = 'image' . $type;		if(function_exists($functionName))		{			$this->old_image = $this->imageHandle;			if($type=='jpeg')				$functionName($this->imageHandle, $filename, $quality);			else				$functionName($this->imageHandle, $filename);			$this->imageHandle = $this->old_image;			$this->resized = false;		}    } // End save    /**     * Display image without saving and lose changes     *     * @param string type (JPG,PNG...);     * @param int quality 75     *     * @return none     */    function display($type = '', $quality = 75)    {        if ($type != '') {            $this->type = $type;        }        $functionName = 'Image' . $this->type;		if(function_exists($functionName))		{			header('Content-type: image/' . strtolower($this->type));			$functionName($this->imageHandle, '', $quality);			$this->imageHandle = $this->old_image;			$this->resized = false;			ImageDestroy($this->old_image);			$this->free();		}    }    /**     * Destroy image handle     *     * @return none     */    function free()    {        if ($this->imageHandle){            ImageDestroy($this->imageHandle);        }    }} // End class ImageGD?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -