gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片、验证码、水印、缩略图等等。

图像生成

<?php
    /*
     用windows画图板画图
      1.新建空白画布(指定宽高)
      2.创建颜料.(红,r 绿g  蓝b,三原色组成的. 三原色由弱到强各可以选0-255之间)
      3.画线,写字,画图形,填充等
      4.保存/输出图片
      5.销毁画布
     */

    //用gd库来画图,仍是以上5个步骤.
    // 1:造画布,以资源形式返回 imagecreatetruecolor(宽,高);
    $im = imagecreatetruecolor(300,200);

    // 2: 创建颜料 imagecolorallocate(画布, 红,绿,蓝)
    $gray = imagecolorallocate($im,100,100,100);

    // 3: 填充画布
    imagefill($im,0,0,$gray);

    // 4: 保存成图片 imagepng(画布 [, 保存位置 ]),imagejpeg(),imagegif()
    header('content-type:image/jpeg');
    imagepng($im);

    // 5: 销毁画布  销毁画面 imagedestroy(画布)
    imagedestroy($im);

?>

缩略图

<?php
    /*
    步骤:
     1.打开图片源文件资源
     2.获得源文件的宽高
     3.使用固定的公式计算新的宽高
     4.生成目标图像资源
     5.进行缩放
     6.保存图像
     7.释放资源
     */
    //1.打开图片源文件资源
    $im = imagecreatefromjpeg('./bg.jpg');

    //2.获得源文件的宽高
    $fx = imagesx($im); // 获取宽度
    $fy = imagesy($im); // 获取高度

    //3.使用固定的公式计算新的宽高
    $sx = $fx/2;
    $sy = $fy/2;
    //4.生成目标图像资源
    $small = imagecreatetruecolor($sx,$sy);

    //5.进行缩放
    imagecopyresampled($small,$im,0,0,0,0,$sx,$sy,$fx,$fy);

    //6.保存图像
    if(imagejpeg($small,'./sbg.jpg')) {
     echo '保存成功';
    } else {
         echo '保存失败';
    }
    //7.释放资源
    imagedestroy($im);
    imagedestroy($small);

 ?>
 

水印生成

<?php
    /*
    步骤:
        1.分别创建大小图画布并获取它们的宽高
        2.添加文字水印
        3.执行图片水印处理
        4.输出
        5.销毁画布
     */
    //1.分别创建大小图画布并获取它们的宽高
    $big = imagecreatefromjpeg('./bg.jpg');
    $bx = imagesx($big);
    $by = imagesy($big);

    $small = imagecreatefrompng('./tu.png');
    $sx = imagesx($small);
    $sy = imagesy($small);

    //2.添加水印文字
    $blue = imagecolorallocate($big,0,0,255);
    imagettftext($big,16,0,100,100,$blue,'./msyh.ttf','骄傲的少年');

    //3.执行图片水印处理
    imagecopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37);

    //4.输出到浏览器
    header('content-type: image/jpeg');
    imagejpeg($big);

    //5.销毁画布
    imagedestroy($big);
    imagedestroy($small);

 ?>
 

验证码

<?php
    /*
    步骤:
        1.创建画布
        2.造颜料
        3.填充背景颜色
        4.画干扰点
        5.画噪点
        6.写字符串
        7.输出图片
        8.销毁画布
     */
    //1.创建画布
    $im=imagecreatetruecolor(50, 30);

    //2.造颜料
    $gray = imagecolorallocate($im,30,30,30);
    $red = imagecolorallocate($im,255,0,0);
    $blue = imagecolorallocate($im, 100, 255, 255);

    //3.填充背景颜色
    imagefill($im,0,0,$blue);

    //4.画干扰点
    for ($i=0; $i <4 ; $i++) {
         imageline($im, rand(0,20),0,100,rand(0,60),$red);
    }

    //5.画噪点
        for($i=0;$i<100;$i++){
            imagesetpixel($im,rand(0,50),rand(0,30),$gray);
        } 

    //6.写字符串
    $str=substr(str_shuffle('ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'),0,4);
    imagestring($im,5,5,5,$str,$red);

    //7.输出图片
        header('content-type:image/png');
        imagepng($im); 

        //8.销毁画布
        imagedestroy($im);

?>

文章原地址:http://www.cnblogs.com/weblm/p/5770281.html

php基础 gd图像生成、缩放、logo水印和验证码的更多相关文章

  1. php基础之gd图像生成、缩放、logo水印和简单验证码实现

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展,windows系统下需要在php.ini中将ext ...

  2. 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...

  3. PHP实现图片的等比缩放和Logo水印功能示例

    文章来自于:脚本之家 文章链接:https://www.jb51.net/article/112909.htm 这篇文章主要介绍了PHP实现图片的等比缩放和Logo水印功能,结合实例形式分析了php图 ...

  4. PHP图片等比缩放,并添加Logo水印特定代码和盯

    <? php //PHP图片等比缩放,并添加Logo水印 --->百度 "美日汇" /** * 等比缩放函数(以保存的方式实现) * @param string $pi ...

  5. 图像添加logo水印函数

    <?php //图像添加水印函数 /** *为一张图片添加上一个logo水印(以保存新图片的方式实现) *@param string $picname 被缩放的处理图片源 *@param int ...

  6. 图片的等比缩放和Logo水印

    /** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int ...

  7. PHP生成带logo图像二维码的两种方法

    本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...

  8. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  9. C#图片处理高级应用(裁剪,缩放,清晰度,水印)

    转自:http://wu-jian.cnblogs.com/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下, ...

随机推荐

  1. Linux安全层详解

    1 bastion(安全堡垒系统)通常配置两个服务: 1 服务定义系统的功能: 2 服务支持远程访问: 原则: 1 不需要某个软件卸载掉: 2 需要某个软件但不使用就不要激活: 为各个bastion系 ...

  2. Birthday Paradox

    Birthday Paradox Sometimes some mathematical results are hard to believe. One of the common problems ...

  3. RDLC Reporting in Visual Studio 2017

    原文:RDLC Reporting in Visual Studio 2017 Visual Studio 2017 中可以使用 RDLC Reporting 插件来设计报表,SAP Crystal ...

  4. Python虚拟机类机制之descriptor(三)

    从slot到descriptor 在Python虚拟机类机制之填充tp_dict(二)这一章的末尾,我们介绍了slot,slot包含了很多关于一个操作的信息,但是很可惜,在tp_dict中,与__ge ...

  5. Django 五——中间件、缓存、CSRF、信号、Bootstrap(模板)

    内容概要: 1.Django的请求生命周期是怎么样的? 2.中间件 3.CSRF补充 4.信号 5.Bootstrap(模板) 1.Django的请求生命周期是怎么样的? (即请求发起到返回都经历了什 ...

  6. 设计模式之第14章-命令模式(Java实现)

    设计模式之第14章-命令模式(Java实现) “小明,滚出去.”“小明,这个问题怎么做?”(可怜的小明无奈躺枪.小明:老师,我和你有什么仇什么怨,我和你有什么仇什么怨啊到底...老师:小明,滚出去.习 ...

  7. python-day4-装饰器的使用

    摘要:某公司的基础开发平台,有大概N多个函数,boss要求小A,为每个函数添加权限验证功能,而且要求不得修改函数内部结构,让小A尝试从代码外部入手,作为新手小A来讲,这无疑是一个巨大的工作量,难道TM ...

  8. day05_09 列表内置方法

    1.0 count(计算元素出现的次数) t = ['to','be','or','not','to','be'].count('to') print(t) #>>>2 2.0 ex ...

  9. python学习-- Django Ajax CSRF 认证

    使用 jQuery 的 ajax 或者 post 之前 加入这个 js 代码:http://www.ziqiangxuetang.com/media/django/csrf.js /*======== ...

  10. Your branch is ahead of 'origin/master' by 21 commits.

    当切换到主分支后,准备 git pull 拉取远程 master 分支时,提示本地主分支显示有 21 个commits 问题原因: 因为你修改了 local master 本地的主分支,可以选择以下方 ...