一,生成验证码:
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. How to export a template in Visual Studio?

    Create a customize template file: 1.template arguments introduction like: 上图只是其中一部分,更多请查看文后的参考资源 tem ...

  2. Android使用ZXing生成带图片的二维码

    效果图如下: 制作过程很简单的就是在原始的二维码图片上添加一个logn图标,代码的注释写得很详细,也就不给大家啰嗦了 package com.example.day44_02_qrcodewithlo ...

  3. MSSQL 判断实例中是否存在某种表

    执行语句 SELECT 'SELECT * FROM '+Name+'..SysObjects Where XType=''U'' and name=''tab_scartrim'' ORDER BY ...

  4. Android 利用Service BroadcastReceiver实现小例子

    Activity: package com.example.test; import android.app.Activity; import android.content.Context; imp ...

  5. [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)

    这次公司要把MS SQL Server 2000 服务器上的数据库复制到新的服务器上面去,于是几百个数据库文件就交给我附加到新服务器上了   以前一直没接触过这方面的东西,于是果断谷歌了也百度了  找 ...

  6. 夺命雷公狗---DEDECMS----32dedecms电影网评价星星功能的实现

    我们要完成的是电影网的评价功能: 我们要做这个功能前,就要让前期工作准备好,首先让鼠标移动到星星时,星星的左边都是黄色的星星右边还是灰星星. 我们打开内容页的模版看下他代码是如何组成的: 我们在这里可 ...

  7. ThinkPHP讲解(四)——视图

    本次讲解主要以<ThinkPHP开发手册>中“模板”一章中讲解为主 在MainController.class.php中新建一个操作方法Test() namespace Home\Cont ...

  8. 给Debian浏览器安装flash播放插件

    sudo apt-get install flashplugin-nonfree  

  9. mydetails-yii1

    1.yii验证码多余的get a new code ,即使在main.php中配置了中文也是出现获取新图片,影响效果 需要把 <?php $this->widget('CCaptcha') ...

  10. 161017、SQL必备知识点

    经典SQL语句大全 基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql ser ...