《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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
MVC模式的PHP实现
Oct 09 PHP
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
php UTF8 文件的签名问题
Oct 30 PHP
php strcmp使用说明
Apr 22 PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
PHP中常用的转义函数
Feb 28 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Python编程入门的一些基本知识
2015/05/13 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python实现倒计时小工具
2019/07/29 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
python实现按日期归档文件
2021/01/30 Python
python中操作文件的模块的方法总结
2021/02/04 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
毕业生文员求职信
2013/11/03 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
大一军训感言
2014/01/09 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
母亲节演讲稿
2014/05/27 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书