一,生成验证码:
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. MySQL编码问题

    client 下的default_character_set=utf8; 它是需要的,可是它的作用是干吗的? 它的作用等同执行以下3个命令 SET character_set_client = utf ...

  2. hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...

  3. asp,asp.net 以表格输出excel,数据默认科学计数的解决办法

    关键字:  style="vnd.ms-excel.numberformat:@" 问题:在用table仿excel生成中经常遇到类似于身份证的长整数类型excel默认当成科学计数 ...

  4. 安装Eclipse并配置JacORB插件

    前人成果 •      eclipse中开发corba完整说明(jacORB版) http://blog.csdn.net/hq0927/article/details/8129534 •      ...

  5. [tp3.2.1]开启URL(重写模式),省略URL中的index.php

    重写模式(省略url中的index.php) 在apache配置文件httpd.conf中,查找 1.mod_rewrite.so, 启动此模块 2.AllowOverride , 值= All 3. ...

  6. Oracle读书笔记

    数据区(也叫数据扩展区)由一组连续的Oracle块所构成的Oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个断(Segment). 数据块是Oracle逻辑存储中的最小的 ...

  7. C++注意事项锦集

    1.std::string的.length()方法     计算代‘/’的字符串的长度会少计算‘/’的个数.比如:[warning]*****[/warning]  

  8. Spring事务注解@Transactional回滚问题

    Spring配置文件,声明事务时,如果rollback-for属性没有指定异常或者默认不写:经测试事务只回滚运行时异常(RuntimeException)和错误(Error). <!-- 配置事 ...

  9. 【Pro ASP.NET MVC 3 Framework】.学习笔记.3.MVC的主要工具-单元测试

    IProductRepository接口定义了一个仓库,我们通过它获得.更新Product对象.IPriceReducer接口指定了一个功能,它将要对所有的Products实施,通过一个参数,降低他们 ...

  10. docker stop 与 docker kill的区别

    docker stop 与 docker kill 均可以将容器停掉,但二者究竟有什么区别呢?首先,摘录一下官网对这两个功能的描述: docker stop: Stop a running conta ...