一,生成验证码:
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. Python学习总结12:sys模块

    sys模块常用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互. 1. 导入及函数查看 >>> import sys #导入sys模块 >>&g ...

  2. EXTJS 5 开发环境搭建

    WEBstrom eclipse下载: http://www.eclipse.org/downloads/ spket 下载: 安装方式: http://wangke0611.iteye.com/bl ...

  3. PHP5各个版本的新功能和新特性总结(转载 http://www.jb51.net/article/48150.htm)

    本文目录:PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredo ...

  4. Spark on Mesos部署

    一.Mesos的安装和部署 1.下载mesos源码和依赖包 部署环境 centOS 6.6 mesos-0.21.0 spark-1.4.1 因为mesos官方只提供源码,所以必须要自己进行编译安装使 ...

  5. 【py分析】

    pyQuery pyQuery 是 jQuery 在 python 中的实现,能够以 jQuery 的语法来操作解析 HTML 文档,十分方便.使用前需要安装,easy_install pyquery ...

  6. 关于 MySQL LEFT JOIN 你可能需要了解的三点

    即使你认为自己已对 MySQL 的 LEFT JOIN 理解深刻,但我敢打赌,这篇文章肯定能让你学会点东西! ON 子句与 WHERE 子句的不同 一种更好地理解带有 WHERE ... IS NUL ...

  7. USB HID描述符【转】

    本文转载自: USB是个通用的总线,端口都是统一的.但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖于描述符了.USB的描述符主要有 ...

  8. PHP用substr截取字符串出现中文乱码问题用mb_substr

    PHP用substr截取字符串出现中文乱码问题用mb_substr实例:mb_substr('截取中文乱码问题测试',0,5, 'utf-8'); 语法 : string substr (string ...

  9. 调整iFrame高度

    在Chrome中,即使将iframe的高度设置为100%,也无法根据内容页自动调节高度,需要在iframe的onload even中通过计算设置iframe的高度 function setIframe ...

  10. ServerMediaSession::generateSDPDescription分析

    //顾名思义,就是用来生成sdp描述信息的. char* ServerMediaSession::generateSDPDescription() { //获取本地IP地址 AddressString ...