PHP Image processing class library and demo sharing

Source: Internet
Author: User
Tags bool imagejpeg md5 md5 encryption relative reset root directory

Simply wrote a PHP image processing class library, although the function is relatively few, but at present also useless to too advanced, later used to fill it, or who to point to add what function, or what the demand can tell me, I have time to add, if this class library has been extended, Also trouble to take out to share, the code is now able to use on the line, consider not a lot of things, what better advice please tell me, thank you

img.php

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-31 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 The 96 97 98 99 100 101 102 103 104 105 106 107 108 109 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140-1 41 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170-171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201-2 02 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231-232 233 234 235 236 237 238 <?php/** * Created by Phpstorm. * User:mction * DATE:2015/5/14 0014 * time:15:36 * Simple Image class Library, all the relative paths in this class are based on the site root directory, if you want to modify, then modify the constant __webroot__ can * function: Specify text content create picture (not In Chinese), create a captcha picture, create thumbnails, and other features to be continued * Method: * Style (array $Options) set Picture style, reset to default Style * Create_img_png () to create Png image, dependent properties specified by Style * Cr Eate_img_jpeg () Creates a Jpeg image, the associated property creates a CAPTCHA image by the style designation * create_verify (), and the associated property is specified by the style * get_verify () to obtain the authentication code value created, MD5 encryption * LOAD_IMG ( String $FilePath) to load the image, create an image source for other methods to invoke the source, FilePath for the image relative path * CREATE_THUMB (String $FileName, String $FilePath) created by Load_img () The thumbnail of the loaded image, filename is the saved image prefix, filepath is the relative path to save the image, does not contain the filename (example:/uploads/images/thumb/)/  if (!defined ("__webroot_ _ ")) define (" __webroot__ ", $_server[' Document_root '));   class IMG {protected $_img;//Picture source protected $_fileimg;//load the picture source protected $_fileinfo;//load the picture's information array protected $_pic Info; Loaded picture of the wide higher information array protected $_rand = ' abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890 '; Random factor protected $_code = '; Authentication Code Public $Width = 300;//picture default wide public $Height = 80; Picture defaultsHigh public $BackgroundColor = "000000"; Public $Font = "/PHPS/PUBLIC/FONT/ARIALNB. TTF "; Default font public $FontSize = 16; Default font font size public $FontColor = "FFFFFF"; Default font Color Public $Content = "Test Word"; Public $Align = "Left"; Public $Codes = 4; Number of authentication codes public $Line = 6; Number of disturbing lines public $LoadErr = '; Error message  //public function __construct () {}  /** set picture properties * @param array $Options Property arrays * @return $this return object/Pub Lic 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, do not provide external access/protected function _re_set () {$this-> Width = $this-> Height = $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 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 sets of 16-bit $Color = Imagecolorallocate ($this-> _img,hexdec ($COLORARR [1]), Hexdec ($COLORARR [2]), Hexdec ($ COLORARR[3])); Add background color imagefilledrectangle to the IMG image source ($this-> _img,0, $this-> Height, $this-> width,0, $Color); Create images}  /** * Create a random captcha/protected function _create_code () {$Len = strlen ($this-> _rand)-1 for ($i = 0; $i < $this-> codes $i + +) {$this-> _code. = $this-> _rand[mt_rand (0, $Len)];}  /** * Write string to image, temporarily does not support Chinese */protected function _write_text () {$FontWidth = Imagefontwidth ($this-> FontSize); Gets the width of one character of the font size Preg_match_all ('/(.) /us ', $this-> Content, $TEXTARR); Separate the contents of the number of statistics $FontHeight = imagefontheight ($this-> fontsize); Gets the height of the font size $X = Ceil (($this-> Width-($FontWidth * COUNT ($TextArr [0])))/2); Set the distance of the left margin of the x wheelbase $Y = Ceil (($this-> Height + $FontHeight)/2); Sets 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__. $this-> Font, $this-> Content); Write content}  /** * Write verification code to the image/protected function _write_code () {$_x = $this-> width/$this-> codes;//Set aspect ratio for ($i = 0; $i < $this-> codes $i + +) {//Loop codes times, generate a validation code value $Color = imagecolorallocate ($this-> _img,mt_rand (0,1 ), Mt_rand (0,156), Mt_rand (0,156)); Color Imagettftext ($this-> _img, $this-> Fontsize,mt_rand (-3) for randomly generated validation code values0,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 interference 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); }  /** * Sets the image type to be Jpeg/protected function _img_jpeg () {header (' content-type:image/jpeg '); Imagejpeg ($this-> _ IMG); Imagedestroy ($this-> _img);  /** * Set the 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 validation code p NG image/Public Function create_verify () {$this-> backgroundcolor = ', for ($I = 0; $I < 3; $I + +) {$this-> Backgro Undcolor. = Dechex (Mt_rand (20,155)); } $this-> _CREATE_IMG_GB (True); $this-> _create_code (); $this-> _write_line (); $this-> _write_code (); $this-> _img_png ();  /** * External obtain 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 Returns the object successfully, or false/public function Load_im G ($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), break, 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 * @param string $FileName saved picture name prefix * @param string $FilePath Save the relative path of the picture * @return Mixed returns an array of information for the generated 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); 2:imagejpeg-> ($this _img,$ Savepath); Case 3:imagepng ($this-> _img, $SavePath); } $FIleinfo[' FileName ' = $FileName; $FIleInfo [' FilePath '] = $FilePath; return $FIleInfo; } }

Using the sample

?

1 2 3 4, 5 6 7 8 9 10 11 12 13 14 15 $IMG = new IMG (); $Options [' Width '] = 300; $Options [' Height '] = 100; $Options [' Content '] = "Test Create Img"; $Options [' fontcolor '] = "FF0000"; $Options [' backgroundcolor '] = "aaaaaa";   $IMG-> Style ($Options)-> create_img_jpg (); if ($Img-> load_img ("/public/images/ad1.png")) {$FileInfo = $Img-> Style (Array (' Width ' =>30, ' Height ' =>30) )-> Create_thumb ("Thumb", "/uploads/images/"); Var_dump ($FileInfo); }else{die ("Load image failed,". $IMG-> loaderr);}

The above mentioned is the entire content of this article, I hope you can enjoy.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.