Home
php教程
PHP源碼
Encapsulates a class that can generate verification codes, thumbnails, and watermarks



Encapsulates a class that can generate verification codes, thumbnails, and watermarks
Nov 08, 2016 pm 01:31 PM<?php class image{ session_start(); //驗(yàn)證碼類 static public function verify($code,$width=75,$height=25,$n=4){ header("content-type:image/png"); // 創(chuàng)建畫布 $img=imagecreatetruecolor($width,$height); // 設(shè)置背景色 $bgcolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); // 將背景色填充 imagefill($img,0,0,$bgcolor); // 繪制五條弧線 for($i=0;$i<5;$i++){ $arccolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imagearc($img,mt_rand(5,($width-5)),mt_rand(5,($height-5)),mt_rand(5,($width-5)),mt_rand(5,($height-5)),mt_rand(0,360),mt_rand(0,360),$arccolor); } // 繪制一百個(gè)點(diǎn) for($i=0;$i<100;$i++){ $pixelcolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imagesetpixel($img,mt_rand(1,($width-1)),mt_rand(1,($height-1)),$pixelcolor); } // 繪制五條線段 for($i=0;$i<5;$i++){ $linecolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imageline($img,mt_rand(1,($width-1)),mt_rand(1,($height-1)),mt_rand(1,($width-1)),mt_rand(1,($height-1)),$linecolor); } // 設(shè)置邊框顏色 $bdcolor=imagecolorallocate($img,mt_rand(150,200),mt_rand(150,200),rand(150,200)); // 繪制一個(gè)矩形無填充邊框 imagerectangle($img,0,0,($width-1),($height-1),$bdcolor); // 設(shè)置驗(yàn)證碼字符串 $str=''; for($i=1;$i<=$n;$i++){ $str.=substr(str_shuffle($code),0,1); } $_SESSION['a']=$str; // for($i=0;$i<$n;$i++){ $textcolor=imagecolorallocate($img,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150)); imagettftext($img,1/($n+1)*$width,mt_rand(-20,20),((1-$n/(5+$n))*$width/($n-1)+$i*1/($n+1)*$width),1/2*($height+3/5*$height),$textcolor,'1.ttf',substr($str,$i,1)); } // 打印圖像 imagepng($img); // 釋放資源 imagedestroy($img); return $str; } //縮略圖類 /* *$source需要縮略的圖片 */ static public function thumbnail($source,$deletesource=false,$width=180){ $info=getimagesize($source); //getimagesize方法獲得圖像的詳細(xì)信息 $createFun=str_replace('/','createfrom',$info['mime']); //將getimagesize中的['mime']中的/替換,變?yōu)閕magecreatefromjpeg方法 $src=$createFun($source); //創(chuàng)建圖像 $dst_w=$width; //縮略圖的寬 $dst_h=$width/$info[0]*$info[1]; //計(jì)算縮略圖的高 $dst=imagecreatetruecolor($dst_w,$dst_h); //新建一個(gè)真彩色圖像 imagecopyresampled($dst,$src,0,0,0,0,$dst_w,$dst_h,$info['0'],$info['1']); //重采樣拷貝部分圖像并調(diào)整大小 $saveFun=str_replace('/','',$info['mime']); //設(shè)置保存函數(shù) $ext=strrchr($source,'.'); //strrchr查找指定字符在字符串中的最后一次出現(xiàn),返回包括其自身在內(nèi)的剩余的字符串 $thumbnailName=str_replace($ext,'',$source).'_thumbnail'.$ext; //設(shè)置保存路徑 if(!$deletesource){ $saveFun($dst,$thumbnailName); //保存圖像 }else{ $saveFun($dst,$thumbnailName); unlink($source); //刪除原圖 } imagedestroy($src); //銷毀資源 imagedestroy($dst); //銷毀資源 return $thumbnailName; } //水印圖類 /* *$srcing水印圖 *$dsting原圖 */ static public function watermark($dstimg,$srcimg){ $dstinfo=getimagesize($dstimg); //getimagesize方法獲取該圖片的詳細(xì)信息(該方法返回的是一個(gè)詳細(xì)的數(shù)組) $srcinfo=getimagesize($srcimg); $createdst=str_replace('/','createfrom',$dstinfo['mime']); //將getimagesize方法返回的數(shù)組中的mime值中的/替換,結(jié)果為imagecreatefromjpeg $createsrc=str_replace('/','createfrom',$srcinfo['mime']); $dst=$createdst($dstimg); //替換后為imagecreatefromjpeg函數(shù),創(chuàng)建一個(gè)圖像 $dst_w=imagesx($dst); //獲取大圖的寬 $dst_h=imagesy($dst); //獲取大圖的高 $src=$createsrc($srcimg); //替換后為imagecreatefromjpeg函數(shù),創(chuàng)建一個(gè)圖像 $src_w=imagesx($src); //獲取水印圖的寬 $src_h=imagesy($src); //獲取水印圖的高 $watermaker=imagecopy($dst,$src,($dst_w-$src_w),($dst_h-$src_h),0,0,$src_w,$src_h); //將水印圖復(fù)制在大圖上 $saveFun=str_replace('/','',$dstinfo['mime']); //將getimagesize返回?cái)?shù)組中的['mime']中的斜杠替換為空,替換后的值為imagejpeg,即為保存函數(shù) $ext=strrchr($dstimg,'.'); //strrchr查找指定字符在字符串中的最后一次出現(xiàn),返回包括其自身在內(nèi)的剩余的字符串 $watermaker=str_replace($ext,'',$dstimg).'_water'.time().$ext; //保存名 $saveFun($dst,$watermaker); //保存圖片,第一個(gè)參數(shù)為要保存的圖片,第二個(gè)參數(shù)為保存路徑或保存名 imagedestroy($dst); //銷毀資源 imagedestroy($src); //銷毀資源 return $watermaker; } } ?>
Statement of this Website
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

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article
Grass Wonder Build Guide | Uma Musume Pretty Derby
1 months ago
By Jack chen
Roblox: 99 Nights In The Forest - All Badges And How To Unlock Them
4 weeks ago
By DDD
Uma Musume Pretty Derby Banner Schedule (July 2025)
1 months ago
By Jack chen
RimWorld Odyssey Temperature Guide for Ships and Gravtech
3 weeks ago
By Jack chen
Windows Security is blank or not showing options
1 months ago
By 下次還敢

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)