《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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
如何在PHP中使用Oracle数据库(3)
Oct 09 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
php使用codebase生成随机数
Mar 25 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 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
几种显示数据的方法的比较
2006/10/09 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
js实现小时钟效果
2020/03/25 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
学校安全教育制度
2014/01/31 职场文书
森林防火工作方案
2014/02/14 职场文书
社区党建工作方案
2014/06/10 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
领导新年致辞2016
2015/07/29 职场文书
创业计划书之寿司
2019/07/19 职场文书
python小型的音频操作库mp3Play
2022/04/24 Python