《PHP编程最快明白》第七讲:php图片验证码与缩略图


Posted in PHP onNovember 01, 2010

实例22 图片验证的核心代码

<?php 
//header("content-type:image/png"); 
$num ='1234'; 
$imagewidth=60; 
$imageheight=18; $numimage = imagecreate($imagewidth,$imageheight); 
imagecolorallocate($numimage,240,240,240); 
for($i=0;$i<strlen($num);$i++){ 
$x = mt_rand(1,8)+$imagewidth*$i/4; 
$y = mt_rand(1,$imageheight/4); 
$color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150)); 
imagestring($numimage,5,$x,$y,$num[$i],$color); 
} 
for($i=0;$i<200;$i++){ 
$randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255)); 
imagesetpixel($numimage,rand()%70,rand()%20,$randcolor); 
} 
imagepng($numimage); 
imagedestroy($numimage); 
?>

这个是输出4个验证码的例子,对于汉字,需要font文件和imagettftext函数,用到的时候大家再网上搜索吧。你要产生随机数,那有mt_rand函数;你还要用到session保存这个随机数;如果需要转成utf-8,需要iconv函数。

实例23 缩略图

<?php 
class SimpleImage { 
var $image; 
var $image_type; 
function load($filename) { 
$image_info = getimagesize($filename); 
$this->image_type = $image_info[2]; 
if( $this->image_type == IMAGETYPE_JPEG ) { 
$this->image = imagecreatefromjpeg($filename); 
} elseif( $this->image_type == IMAGETYPE_GIF ) { 
$this->image = imagecreatefromgif($filename); 
} elseif( $this->image_type == IMAGETYPE_PNG ) { 
$this->image = imagecreatefrompng($filename); 
} 
} 
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) { 
if( $image_type == IMAGETYPE_JPEG ) { 
imagejpeg($this->image,$filename,$compression); 
} elseif( $image_type == IMAGETYPE_GIF ) { 
imagegif($this->image,$filename); 
} elseif( $image_type == IMAGETYPE_PNG ) { 
imagepng($this->image,$filename); 
} 
if( $permissions != null) { 
chmod($filename,$permissions); 
} 
} 
function output($image_type=IMAGETYPE_JPEG) { 
if( $image_type == IMAGETYPE_JPEG ) { 
imagejpeg($this->image); 
} elseif( $image_type == IMAGETYPE_GIF ) { 
imagegif($this->image); 
} elseif( $image_type == IMAGETYPE_PNG ) { 
imagepng($this->image); 
} 
} 
function getWidth() { 
return imagesx($this->image); 
} 
function getHeight() { 
return imagesy($this->image); 
} 
function resizeToHeight($height) { 
$ratio = $height / $this->getHeight(); 
$width = $this->getWidth() * $ratio; 
$this->resize($width,$height); 
} 
function resizeToWidth($width) { 
$ratio = $width / $this->getWidth(); 
$height = $this->getheight() * $ratio; 
$this->resize($width,$height); 
} 
function scale($scale) { 
$width = $this->getWidth() * $scale/100; 
$height = $this->getheight() * $scale/100; 
$this->resize($width,$height); 
} 
function resize($width,$height) { 
$new_image = imagecreatetruecolor($width, $height); 
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); 
$this->image = $new_image; 
} 
} $newfile = UPLOAD_DIR."/icons/".md5($_SESSION['USER']->email).".jpg";//上传文件保存的目录 
$image = new SimpleImage(); 
$image->load($_FILES['icons']['tmp_name']);//上传的临时文件名 
$image->resizeToWidth(80);设置宽度 
$image->save($newfile); 
?>
PHP 相关文章推荐
php Memcache 中实现消息队列
Nov 24 PHP
php知道与问问的采集插件代码
Oct 12 PHP
php的大小写敏感问题整理
Dec 29 PHP
PHP计数器的实现代码
Jun 08 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
PHP上传文件参考配置大文件上传
Dec 16 PHP
php利用gd库为图片添加水印
Nov 09 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
php工具型代码之印章抠图
Jul 18 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 #PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 #PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 #PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 #PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 #PHP
一篇有意思的技术文章php介绍篇
Oct 26 #PHP
理解php原理的opcodes(操作码)
Oct 26 #PHP
You might like
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
python多重继承实例
2014/10/11 Python
python中xrange用法分析
2015/04/15 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python 使用office365邮箱的示例
2020/10/29 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
酒店副总岗位职责
2013/12/24 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
公务员保密承诺书
2014/03/27 职场文书
党支部承诺书
2015/01/20 职场文书
受资助学生感谢信
2015/01/21 职场文书
决心书格式范文
2015/09/23 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
Python时间操作之pytz模块使用详解
2022/06/14 Python