/** * Created by Phpstorm. * User:mction * DATE:2015/5/14 0014 * time:15:36 * Simple Image class library, all relative paths in this class are based on the Web site root directory, if you need to modify, modify the constant __webroot__ to * Function: Specify text content create picture (not Chinese), create captcha picture, create thumbnail, other features to be continued Method * Style (array $Options) to set the picture style, reset to default style before each setting * Create_img_png () creates a Png image, the related property is specified by style * CREATE_IMG_JPEG () creates a Jpeg image, the related property is specified by the style * Create_verify () Create CAPTCHA image, related properties specified by style * Get_verify () Gets the value of the captcha created, MD5 encryption * LOAD_IMG (string $FilePath) load image, create image source for other method call source, FilePath as image relative path * CREATE_THUMB (String $FileName, String $FilePath) creates a thumbnail of an image loaded by load_img (), FileName is the saved image prefix, FilePath is the relative path of the saved image. File name not included (example:/uploads/images/thumb/) */ if (!defined ("__webroot__")) define ("__webroot__", $_server[' Document_root ']); Class IMG { protected $_img; Picture Source protected $_fileimg; The loaded picture source protected $_fileinfo; An array of information about the loaded picture protected $_picinfo; An array of wide and high information about the loaded picture protected $_rand = ' abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890 '; Random factor protected $_code = "; Verification Code Public $Width = 300;//picture default width Public $Height = 80; Image Default Height Public $BackgroundColor = "000000"; Public $Font = "/PHPS/PUBLIC/FONT/ARIALNB. TTF "; Default font public $FontSize = 16; Default font Size Public $FontColor = "FFFFFF"; Default font Color Public $Content = "Test Word"; Public $Align = "Left"; Public $Codes = 4; Number of verification codes Public $Line = 6; Number of interfering lines Public $LOADERR = '; Error message Public Function __construct () {} /** Setting picture Properties * @param array $Options Property * @return $this return objects */ Public Function Style ($Options) { $this-_re_set (); foreach ($Options as $K = = $V) { if (In_array ($K, Array (' Width ', ' Height ', ' backgroundcolor ', ' Font ', ' FontSize ', ' fontcolor ', ' Content ', ' Align ', ' Codes ', ' line ', ' Snow ')) { if ($K = = "BackgroundColor" | | $K = = "FontColor") { if (Preg_match ("# ([a-za-z0-9]{6}) #", $V)) $this, $K = $V; }else{ $this $K = $V; } } } return $this; } /** * Reset Properties, no external access available */ protected function _re_set () { $this Width = 100; $this, Height = 30; $this-backgroundcolor = "000000"; $this, Font = "/PHPS/PUBLIC/FONT/ARIALNB. TTF "; $this-FontSize = 16; $this-fontcolor = "FFFFFF"; $this-Align = "Left"; $this-Codes = 4; $this line = 6; } /** * Create an image source, add a background, create an image * @param bool $BGC Specify whether to create a background color and a rectangular block */ protected function _create_img_gb ($BGC = True) { $this-_img = Imagecreatetruecolor ($this Width, $this, Height); Create a background source if ($BGC) { Preg_match ("# ([a-za-z0-9]{2}] ([a-za-z0-9]{2}) ([a-za-z0-9]{2}) #", $this-BackgroundColor, $COLORARR); Separates color values into three groups of 16-bit binary numbers $Color = Imagecolorallocate ($this-_img,hexdec ($COLORARR [1]), Hexdec ($COLORARR [2]), Hexdec ($COLORARR [3])); Add a background color to an IMG image source Imagefilledrectangle ($this, _img,0, $this, $this, width,0, $Color); Create an image } } /** * Create random verification code */ protected function _create_code () { $Len = strlen ($this-_rand)-1; for ($i = 0; $i < $this, Codes; $i + +) { _code $this, $this---_rand[mt_rand (0, $Len)]; } } /** * Write a string to the image, not currently supported in Chinese */ protected function _write_text () { $FontWidth = Imagefontwidth ($this-FontSize); Gets the width of a character of the font size Preg_match_all ('/(.) /us ', $this, Content, $TEXTARR); Divide the content by the number of statistics in an array $FontHeight = Imagefontheight ($this-FontSize); Gets the height of the font size $X = Ceil (($this Width-($FontWidth * COUNT ($TextArr [0]))/2); Set the distance from the left margin of the X wheelbase $Y = Ceil ($this, Height + $FontHeight)/2); Set the distance of the top margin of the Y wheelbase Preg_match ("# ([a-za-z0-9]{2}] ([a-za-z0-9]{2}) ([a-za-z0-9]{2}) #", $this-FontColor, $COLORARR); $Color = Imagecolorallocate ($this-_img,hexdec ($COLORARR [1]), Hexdec ($COLORARR [2]), Hexdec ($COLORARR [3])); Set Text color Imagettftext ($this-_img, $this-fontsize,0, $X, $Y, $Color, __webroot__. Font, $this-and Content); Write content } /** * Write the verification code to the image */ protected function _write_code () { $_x = Codes, width/$this, $this Setting the aspect ratio for ($i = 0; $i < $this, Codes; $i + +) {//Loop Codes times, generate one verification code value at a time $Color = Imagecolorallocate ($this, _img,mt_rand (0,156), Mt_rand (0,156), Mt_rand (0,156)); Randomly generate the color of the CAPTCHA value Imagettftext ($this, _img, $this, Fontsize,mt_rand ( -30,30), $_x* $i +mt_rand (1,5), $this-height/1.3, $Color , __webroot__. $this, Font, $this-_code[$i]); Generate a verification code value } } /** * Write interference lines to the image */ protected function _write_line () {//Generate interfering lines For ($i =0, $i < $this line; $i + +) { $Color = Imagecolorallocate ($this, _img,mt_rand (0,156), Mt_rand (0,156), Mt_rand (0,156)); Imageline ($this, _img,mt_rand (0, $this, width), mt_rand (0, $this, Height), Mt_rand (0, $this-width), mt_ Rand (0, $this, Height), $Color); } } /** * Set Image type to JPEG */ protected function _img_jpeg () { Header (' Content-type:image/jpeg '); Imagejpeg ($this-_img); Imagedestroy ($this-_img); } /** * Set Image type to PNG */ protected function _img_png () { Header (' content-type:image/png '); Imagepng ($this-_img); Imagedestroy ($this-_img); } /** * Create a JPEG string image */ Public Function create_img_jpg () { $this-_CREATE_IMG_GB (True); $this-_write_text (); $this-_img_jpeg (); } /** * Create a PNG string image */ Public Function Create_img_png () { $this-_CREATE_IMG_GB (True); $this-_write_text (); $this-_img_png (); } /** * Create a PNG image of the verification code */ Public Function create_verify () { $this-backgroundcolor = "; for ($I = 0; $I < 3; $I + +) { $this, BackgroundColor. = Dechex (Mt_rand (20,155)); } $this-_CREATE_IMG_GB (True); $this-_create_code (); $this-_write_line (); $this-_write_code (); $this-_img_png (); } /** * External access to MD5 encrypted verification code * @return String */ Public Function get_verify () { Return MD5 ($this-_code); } /** * Load an image file and get information about the image * @param string $FilePath image relative path address * @return $this |bool successfully returned the object, otherwise it will return false */ Public Function load_img ($FilePath) { $FilePath = __webroot__. $FilePath; if (!is_file ($FilePath)) { $this-loaderr = "Path error, file does not exist"; Return False; } $this-_picinfo = getimagesize ($FilePath); $this-_fileinfo = PathInfo ($FilePath); Switch ($this-_picinfo[2]) { Case 1: $this->_fileimg = Imagecreatefromgif ($FilePath); Case 2: $this->_fileimg = Imagecreatefromjpeg ($FilePath); Case 3: $this->_fileimg = Imagecreatefrompng ($FilePath); Default: $this-loaderr = "type error, unsupported picture type"; Return False; } Return True; } /** * Create thumbnail image * @param string $FileName The picture name prefix saved * @param string $FilePath to save the relative path of the picture * @return Mixed returns an array of information about the resulting picture */ Public Function Create_thumb ($FileName, $FilePath) { $SavePath = __webroot__. $FilePath; if (!file_exists ($SavePath)) { mkdir ($SavePath, 0777,true); } $FileName = $FileName. Date ("Ymdhis"). Rand (100,999). '. '. $this, _fileinfo[' extension '); $FilePath = $FilePath. $FileName; $SavePath = $SavePath. $FileName; $this-_CREATE_IMG_GB (False); Imagecopyresampled ($this, _img, $this, _fileimg,0,0,0,0, $this, Width, $this, Height, $this, Picinfo[0], $this-_picinfo[1]); Switch ($this-_picinfo[2]) { Case 1:imagegif ($this, _img, $SavePath); Case 2:imagejpeg ($this, _img, $SavePath); Case 3:imagepng ($this, _img, $SavePath); } $FIleInfo [' FileName '] = $FileName; $FIleInfo [' FilePath '] = $FilePath; Return $FIleInfo; } } |