《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 文件上传功能实现代码
Jun 24 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
利用php输出不同的心形图案
Apr 22 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
详解PHP swoole process的使用方法
Aug 26 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
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
python中常用的九种预处理方法分享
2016/09/11 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python高级特性简介
2020/08/13 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
2014两会学习心得:时代的发展
2014/03/17 职场文书
六个一活动实施方案
2014/03/21 职场文书
地震慰问信
2015/02/14 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
Python List remove()实例用法详解
2021/08/02 Python