《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服务器实现多session并发运行
Oct 09 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
基于php iconv函数的使用详解
Jun 09 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
Yii rules常用规则示例
Mar 15 PHP
PHP数据库处理封装类实例
Dec 24 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 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的面试题集
2006/11/19 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php简单生成随机数的方法
2015/07/30 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
JavaScript模块详解
2017/12/18 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python yield的用法实例分析
2020/03/06 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
三好学生自我鉴定
2013/12/17 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
升职自荐信范文
2015/03/27 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS