对PHP编程的最快理解第七:PHP图片验证代码和缩略图
示例22图片验证的核心代码复制代码代码如下所示:
< PHP
页眉(内容类型:图像);
Num = '1234美元;
imagewidth = 60美元;
ImageHeight = 18美元;
numimage美元=画面欣赏(imagewidth美元,$ ImageHeight);
imagecolorallocate(numimage美元,240240240);
为($我= 0;$我< strlen($num);$ i++){
X元= mt_rand(1,8)+ $ imagewidth * $我/ 4;
Y元= mt_rand(1,$ ImageHeight / 4);
颜色= imagecolorallocate美元(美元numimage,mt_rand(0150),mt_rand(0150),mt_rand(0150));
imagestring(numimage美元,5美元美元,X,Y,$num {我}美元,美元的颜色);
}
($ i = 0;$ i < 200;$ + +){
randcolor = imagecolorallocate美元(美元numimage,伦德(200255),伦德(200255),伦德(200255));
imagesetpixel(numimage美元,伦德()伦德()% % 70,20,randcolor美元);
}
imagepng($ numimage);
销毁一图像($ numimage);
>
这是4个验证码的输出示例。汉字的字体文件,你需要和imagettftext功能。当你使用它,你可以在网上搜索。你要产生一个随机数,有mt_rand功能;你还需要使用会话保存随机数;如果你需要求助于UTF-8,你需要一个iconv函数。
例23缩略图
复制代码代码如下所示:
< PHP
类简单{
var映像;
VaR image_type美元;
函数加载($文件名){
image_info美元= getimagesize($文件名);
美元-> image_type = $ image_info { 2 };
如果(美元-> image_type = = imagetype_jpeg){
美元->图像= imagecreatefromjpeg($文件名);
} elseif(美元-> image_type = = imagetype_gif){
美元->图像= imagecreatefromgif($文件名);
} elseif(美元-> image_type = = imagetype_png){
美元->图像= imagecreatefrompng($文件名);
}
}
功能保存(文件名image_type = imagetype_jpeg美元,美元,美元= 75美元受压,权限= null){
如果($ image_type = = imagetype_jpeg){
imagejpeg(美元->图像文件压缩美元,美元);
} elseif($ image_type = = imagetype_gif){
imagegif(美元美元->图像,文件名);
} elseif($ image_type = = imagetype_png){
imagepng(美元美元->图像,文件名);
}
如果($权限)!= NULL){
chmod($文件名,$权限);
}
}
功能输出($ image_type = imagetype_jpeg){
如果($ image_type = = imagetype_jpeg){
imagejpeg(美元->图像);
} elseif($ image_type = = imagetype_gif){
imagegif(美元->图像);
} elseif($ image_type = = imagetype_png){
imagepng(美元->图像);
}
}
功能getWidth(){
返回imagesx(美元->图像);
}
功能getHeight(){
返回imagesy(美元->图像);
}
功能resizetoheight($高度){
美元比= $高度/美元-> getHeight();
$宽度=美元-> getWidth()* $比;
$ >调整大小(宽度,高度);
}
功能resizetowidth($宽度){
美元美元的比率=宽度/美元-> getWidth();
高度=美元美元-> getHeight()* $比;
$ >调整大小(宽度,高度);
}
功能刻度($刻度){
$宽度=美元-> getWidth()* $规模 / 100;
高度=美元美元-> getHeight()* $规模 / 100;
$ >调整大小(宽度,高度);
}
函数调整大小(宽度,高度){
new_image美元=新建一个真彩色图像($美元宽度,高度);
imagecopyresampled(new_image美元,美元->图像,0, 0, 0,0美元美元,宽度,高度,美元-> getWidth(),美元-> getHeight());
美元->图像= $ new_image;
}
}
upload_dir NewFile.txt美元。= / / 图标。MD5($ _session { } ->电子邮件用户)。文件目录
美元=新图像简单();
为图像->负荷($ _files { } { } 'tmp_name 'icons ' '); / /临时文件上传的名字
图像-> resizetowidth美元(80);设置宽度
图像->保存美元($新文件);
>