《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 header()函数使用详细(301、404等错误设置)
Apr 17 PHP
基于initPHP的框架介绍
Apr 18 PHP
php编程每天必学之验证码
Mar 03 PHP
php制作简单模版引擎
Apr 07 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
laravel 解决crontab不执行的问题
Oct 22 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 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
2019十大人气国漫
2020/03/13 国漫
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
php命令行写shell实例详解
2018/07/19 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
jquery中each循环的简单回滚操作
2017/05/05 jQuery
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python用GET方法上传文件
2015/03/10 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python中的字符串替换操作示例
2016/06/27 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python使用多进程的实例详解
2018/09/19 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
护理职业生涯规划书
2014/01/24 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
2016年情人节问候语
2015/11/11 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
全新239军机修复记
2022/04/05 无线电