0
在线手册:中文 英文

图片裁剪处理

<?php 
function cut($background$cut_x$cut_y$cut_width$cut_height$location){
  
$back=imagecreatefromjpeg($background);
  
$new=imagecreatetruecolor($cut_width$cut_height);
  
imagecopyresampled($new$back00$cut_x$cut_y$cut_width$cut_height,$cut_width,$cut_height);
  
imagejpeg($new$location);
  
imagedestroy($new);
  
imagedestroy($back);
}

// 图片裁剪处理
cut('./images/hee.jpg'440140117112'./images/hee5.jpg');

文字,图片水印

<?php 
 
/** 
 * 图片添加文字水印
 */

 
function mark_text($background$text$x$y){
   
$back=imagecreatefromjpeg($background);
   
$color=imagecolorallocate($back02550);
   
imagettftext($back200$x$y$color"simkai.ttf"$text);
   
imagejpeg($back"./images/hee7.jpg");
   
imagedestroy($back);
 }
 
mark_text("./images/hee.jpg""细说PHP"150250);

 
/** 
 * 图片水印
 */
 
function mark_pic($background$waterpic$x$y){
   
$back=imagecreatefromjpeg($background);
   
$water=imagecreatefromgif($waterpic);
   
$w_w=imagesx($water);
   
$w_h=imagesy($water);
   
imagecopy($back$water$x$y00$w_w$w_h);
   
imagejpeg($back,"./images/hee8.jpg");
   
imagedestroy($back);
   
imagedestroy($water);
 }
 
mark_pic("./images/hee.jpg""./images/gaolf.gif"50200);

图片旋转

<?php 
 
/**
 * 图片旋转
 */
 
$back=imagecreatefromjpeg("./images/hee.jpg");

 
$new=imagerotate($back450); // 45度, 正反
 
imagejpeg($new"./images/hee9.jpg");

图片水平翻垂直翻转

<?php 
/**
 * 图片水平翻转 垂直翻转
 */
 
function turn_y($background$newfile){
 
$back=imagecreatefromjpeg($background);
 
$width=imagesx($back);
 
$height=imagesy($back);
 
$new=imagecreatetruecolor($width$height);
 for(
$x=0$x $width$x++){
 
imagecopy($new$back$width-$x-10$x01$height);
 }
 
imagejpeg($new$newfile);
 
imagedestroy($back);
 
imagedestroy($new);
 }
 function 
turn_x($background$newfile){
 
$back=imagecreatefromjpeg($background);
 
$width=imagesx($back);
 
$height=imagesy($back);
 
$new=imagecreatetruecolor($width$height);
 for(
$y=0$y $height$y++){
 
imagecopy($new$back,0$height-$y-10$y$width1);
 }
 
imagejpeg($new$newfile);
 
imagedestroy($back);
 
imagedestroy($new);
 }
 
turn_y("./images/hee.jpg""./images/hee11.jpg");
 
turn_x("./images/hee.jpg""./images/hee12.jpg");

图片验证码类

<?php 
//验证码类
class ValidateCode {
 private 
$charset 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子
 
private $code;//验证码
 
private $codelen 4;//验证码长度
 
private $width 130;//宽度
 
private $height 50;//高度
 
private $img;//图形资源句柄
 
private $font;//指定的字体
 
private $fontsize 20;//指定字体大小
 
private $fontcolor;//指定字体颜色
 //构造方法初始化
 
public function __construct() {
  
$this->font dirname(__FILE__).'/font/elephant.ttf';//注意字体路径要写对,否则显示不了图片
 
}
 
//生成随机码
 
private function createCode() {
  
$_len strlen($this->charset)-1;
  for (
$i=0;$i<$this->codelen;$i++) {
   
$this->code .= $this->charset[mt_rand(0,$_len)];
  }
 }
 
//生成背景
 
private function createBg() {
  
$this->img imagecreatetruecolor($this->width$this->height);
  
$color imagecolorallocate($this->imgmt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
  
imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
 }
 
//生成文字
 
private function createFont() {
  
$_x $this->width $this->codelen;
  for (
$i=0;$i<$this->codelen;$i++) {
   
$this->fontcolor imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
   
imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height 1.4,$this->fontcolor,$this->font,$this->code[$i]);
  }
 }
 
//生成线条、雪花
 
private function createLine() {
  
//线条
  
for ($i=0;$i<6;$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);
  }
  
//雪花
  
for ($i=0;$i<100;$i++) {
   
$color imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
   
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
  }
 }
 
//输出
 
private function outPut() {
  
header('Content-type:image/png');
  
imagepng($this->img);
  
imagedestroy($this->img);
 }
 
//对外生成
 
public function doimg() {
  
$this->createBg();
  
$this->createCode();
  
$this->createLine();
  
$this->createFont();
  
$this->outPut();
 }
 
//获取验证码
 
public function getCode() {
  return 
strtolower($this->code);
 }
}

session_start();
require 
'./ValidateCode.class.php';  //先把类包含进来,实际路径根据实际情况进行修改。
$_vc = new ValidateCode();  //实例化一个对象
$_vc->doimg();  
$_SESSION['authnum_session'] = $_vc->getCode();//验证码保存到SESSION中

图片验证码类2

<?php 
session_start
();
//开启session记录验证码数据
 
vCode(415);//设置验证码的字符个数和图片基础宽度
 
//vCode 字符数目,字体大小,图片宽度、高度
function vCode($num 4$size 20$width 0$height 0) {
 
    !
$width && $width $num $size 15;
    !
$height && $height $size 10;
 
    
//设置验证码字符集合
    
$str "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
    
//保存获取的验证码
    
$code '';
 
    
//随机选取字符
    
for ($i 0$i $num$i++) {
        
$code .= $str[mt_rand(0strlen($str)-1)];
    }
 
    
//创建验证码画布
    
$im imagecreatetruecolor($width$height);
 
    
//背景色
    
$back_color imagecolorallocate($immt_rand(0,100),mt_rand(0,100), mt_rand(0,100));
 
    
//文本色
    
$text_color imagecolorallocate($immt_rand(100255), mt_rand(100255), mt_rand(100255));
 
    
imagefilledrectangle($im00$width$height$back_color);
 
 
     
// 画干扰线
    
for($i 0;$i 5;$i++) {
        
$font_color imagecolorallocate($immt_rand(0255), mt_rand(0255), mt_rand(0255));
        
imagearc($immt_rand(- $width$width), mt_rand(- $height$height), mt_rand(30$width 2), mt_rand(20$height 2), mt_rand(0360), mt_rand(0360), $font_color);
    }
 
     
// 画干扰点
    
for($i 0;$i 50;$i++) {
        
$font_color imagecolorallocate($immt_rand(0255), mt_rand(0255), mt_rand(0255));
        
imagesetpixel($immt_rand(0$width), mt_rand(0$height), $font_color);
    }
 
    
//随机旋转角度数组
    
$array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);
 
     
// 输出验证码
    // imagefttext(image, size, angle, x, y, color, fontfile, text)
    
@imagefttext($im$size array_rand($array), 12$size 6$text_color'c:\WINDOWS\Fonts\simsun.ttc'$code);
    
$_SESSION["VerifyCode"]=$code;
    
//no-cache在每次请求时都会访问服务器
    //max-age在请求1s后再次请求会再次访问服务器,must-revalidate则第一发送请求会访问服务器,之后不会再访问服务器
    // header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
    
header("Cache-Control: no-cache");
    
header("Content-type: image/png;charset=gb2312");
    
//将图片转化为png格式
    
imagepng($im);
    
imagedestroy($im);
}
0
在线手册:中文 英文