《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&amp;mysql(三)
Oct 09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
PHP 写文本日志实现代码
May 18 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
Python调用C++程序的方法详解
2017/01/24 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python 文件转成16进制数组的实例
2018/07/09 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
工作的心得体会
2013/12/31 职场文书
白酒市场开发计划书
2014/01/09 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
军训自我鉴定100字
2014/02/13 职场文书
研修第一天随笔感言
2014/02/15 职场文书
电台实习生求职信
2014/02/25 职场文书
教师一岗双责责任书
2014/04/16 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
培训通知书模板
2015/04/17 职场文书
大学同学聚会感言
2015/07/30 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
Python道路车道线检测的实现
2021/06/27 Python