一,生成验证码:
1、生成一张图片;
recource imagecreatetruecolor(int $width , int $height) 
注意:提前输出图片的header信息,默认是黑色背景/
2、header (‘content-type:image/png');
3、 生成白色底图颜色:
$bgcolor = imagecolorallocate($image,255,255,255);
4、填充底图:
imagefill($image,0,0,$bgcolor);
5、取随机数字在底图上生成
for($i=0;$i<4;$i++)
{
     $fontsize = 6;
     $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
     $fontcontent = rand(0,9);
     $x = ($i*100/4)+rand(5,10);
     $y = rand(5,10);
     imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
6、加干扰点
for($i=0;$i<200;$i++)
{
    $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
    imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
}
7、加干扰线
for($i=0;$i<3;$i++)
{
    $linecolor = imagecolorallocate($image, rand(50,100), rand(50,100), rand(50,100));
    imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$pointcolor);
}
8、生成imagepng($image);
9、imagedestroy($image);销毁
10、生成事件字母与数字
$data="abckhsASDSDADFASodSDASDASfijo123456789";
$fontcontent = substr($data,rand(0,strlen($data)),1);
11、生成随机字体
$str="是电话费是丹佛我说的哈佛还是东方红";
$strdb=str_split($str,3);
for($i=0;$i<4;$i++)
{
     $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
     $index=rand(0,count($strdb));
     $cn=$strdb[$index];
     $fontface='simhei.ttf';
     imagettftext($image,mt_rand(20,24),mt_rand(-60,60),(40*$i+20),mt_rand(20,50),$fontcolor,$fontface,$cn);
}
二、图片加字体水印和处理缩略图
 
打开图片
1、配置图片路径
$src='123.jpg';
2、获取图片信息
$info = getimagesize($src);
3、通过图像的编号来获取图像的类型
$type=image_type_to_extension($info[2],false);
4、在内存中创建一个和图像一样的图像
$fun = "imagecreatefrom($type):;
5、把图片复制到我们的内存中
$image = $fun($src);
 
操作图片
 
1、设置字体路径
$font = "msyh.ttf";
2、设置我们的水印内容
$content = "你好“;
3、设置字体的颜色和透明度
$color = imagecolorallcatealpha($image,255,255,255,59);
4、写入文字
imagettftext($image,20,0,20,30,$color,$font,$content)
输出图片
1、浏览器输出
header("Content-type:"$info['mime']);
$func = "image{$type}";
func($image);
保存图片
$func($image,'newimage'.$type);
销毁图片
imagedestory($image );
 
三、给图片加图片水印
打开图片
 1、配置图片路径
2、配置图片基本信息
3、通过图片编号来获取图片的类型
4、在内存中创建一个图片一样的图片
5、把图片复制到内存中
操作图片
1、设置水印的路径
2、配置水印 基本信息
3、通过水印 编号来获取图片的类型
4、在内存中创建一个水印 一样的图片
5、把水印 复制到内存中
6、合并水印和图片
imagecopymerge($image,$water,20,30,0,0,$info1[0],$info1[1],80);
7、销存水印图片
imagedestroy($water);
输出图片
1在浏览器输出
header("content-type:",$info['mime']);
$funs="image{$type}";
$funs($image);
2、保存在本地磁盘
$funs($image,'imageMark.'.$type);
销毁图片
imagedestroy($image);
 
四、缩放图片
1、在内存中建立一个真色彩的图片,承载体;
$image_thumb = imagecreatetruecolor(300,200);
2、核心步,将原图复制到新建的真色彩图片上,并且按照一定比例压缩
imagecopyresampled($image_thumb,$image,0,0,0,0,300,200,$info[0],$info[1]);
3、销毁原始图片
imagedestroy($image);

php 基础复习(2)GD库的更多相关文章

  1. 一起学习PHP中GD库的使用(三)

    上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能.不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用.毕竟现在的各种外挂软件已经能 ...

  2. 安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错

    在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示 ...

  3. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  4. PHP中GD库的使用

    1.基本步骤 <?php /** * Created by PhpStorm. * User: jiqing * Date: 18-4-9 * Time: 上午9:34 * 熟悉步骤 */ // ...

  5. 记一次bypass某场景GD库及拓展分析

    0x00 前言 gou楼兰师傅发来个站说是过不了gd库,问我有啥办法没有,给了他之前海贼师傅说的jpg_payload脚本,但是绕不过,问他拿了站点,写了个jpg_payload批量的fuzz脚本,f ...

  6. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  7. 一起学习PHP中GD库的使用(一)

    又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎.从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们 ...

  8. PHP的GD库

    GD库 PHP通过GD库,可以对JPG.PNG.GIF.SWF等图片进行处理.GD库常用在图片加水印,验证码生成等方面. 绘制线条 要对图形进行操作,首先要新建一个画布,通过imagecreatetr ...

  9. gd库

    1.开启GD库扩展 去掉注释: extension=php_gd2.dll extension_dir='ext目录所在位置' 2.检测GD库是否开启 phpinfo(); //检测扩展是够开启 ex ...

  10. 已安装php 编译安装 gd库拓展模块

    参考资料:http://wenku.baidu.com/link?url=EgXFShYxeJOZSYNQ_7RCBC-6X8OcRRCqVm4qCv49uBk57d6vLBoUpfYdQ-KqJRs ...

随机推荐

  1. linux centos5.7(32bit) oracle 10g oracle11g

    cenOS5.5安装oracle10g(傻瓜篇) http://www.cnblogs.com/fnng/archive/2012/06/19/2554159.html  (转) 在cenOS5.5上 ...

  2. emulator-arm.exe 已停止工作、 emulator-x86 已停止工作

    问题描述: emulator-arm.exe 已停止工作. emulator-x86 已停止工作.AVD模拟器启动一直黑屏.AVD模拟器启动一直显示andorid界面 解决方法: 1.   sdk的安 ...

  3. 用VS2010编C#程序扫盲 2

    0.正则表达式:http://www.runoob.com/csharp/csharp-regular-expressions.html 1.异常处理: try { // 引起异常的语句 } catc ...

  4. 让git忽略文件模式的改变

    使用git的过程中发现,就算文件的内容没改变,只有文件的权限改变的话,git也会检测到文件被修改了. 解决方法是配置一下: git config --global core.filemode fals ...

  5. 《zw版·Halcon-delphi系列原创教程》 3d汽车模型自动区域分割

    <zw版·Halcon-delphi系列原创教程> 3d汽车模型自动区域分割 目前,图像分析,在3D设计,机器视觉方面拥有很广.这个Halcon脚本是3d汽车模型自动区域分割,很简单才20 ...

  6. 【pyQuery分析论坛】精英乒乓论坛

    In [25]: t= h('table') In [26]: In [26]: t('.mainbox').text() Out[26]: u'\u72b6\u6001 \u4e3b\u9898 \ ...

  7. iBatis叙述

    1.添加Mybatis的配置文件conf.xml 在src目录下创建一个conf.xml文件,如下图所示: 2.定义表所对应的实体类 3.定义操作users表的sql映射文件userMapper.xm ...

  8. 查看linux僵尸进程

    top ps -A -o stat,ppid,pid,cmd | grep -e '^[zZ]' kill -HUP 进程号

  9. java运算符优先级记忆口诀

    尊重原创:(口诀)转自http://lasombra.iteye.com/blog/991662 今天看到<java编程思想>中的运算符优先级助记口诀,不过"Ulcer Addi ...

  10. javaWeb 使用jsp开发 foreach 标签

    1.jsp代码 测试数据 <% List<String> list = new ArrayList<String>(); list.add("aaa" ...