php基础 gd图像生成、缩放、logo水印和验证码

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

时间: 2025-01-02 01:39:12

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

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

php基础之gd图像生成.缩放.logo水印和简单验证码实现 阅读目录 图像生成 缩略图 水印生成 验证码 gd 库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩 展,windows系统下需要在php.ini中将extension=php_gd2.dll 前边的分号去掉然后重启web服务器,linux系统下一般在编译php时已经开启gd库扩展,要是没有开启gd库扩展则需要先编译安装freetype ,j

图片的等比缩放和Logo水印

/** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int $maxy 缩放后图片的最大高度 * @param string $pre 缩放后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg */ function imageUpdateSize($picname,$maxx=100,$maxy=

PHP图片的等比缩放和增加Logo水印详细代码和注释

<?php //PHP图片的等比缩放和增加Logo水印 --->百度 "美日汇" /** * 等比缩放函数(以保存的方式实现) * @param string $picName 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int $maxy 缩放后图片的最大高度 * @param string $pre 缩放后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jp

PHP 使用GD库生成验证码 在图像上绘制汉字

PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像. 更加方便的是,PHP 可以直接将图像数据流输出到浏览器. 要想在 PHP 中使用图像处理功能,你需要连带 GD 库一起来编译 PHP. GD 库和 PHP 可能需要其他的库, 这取决于你要处理的图像格式. 你可以使用 PHP 中的图像函数来获取下列格式图像的大小: JPEG, GIF, PNG, SWF, TIFF 和 JPEG2000.如果联合 ex

PHP 使用QR code库生成带LOGO图像的二维码

这几天的项目中要用到生成二维码的功能,而且老板要求二维码中间有一个LOGO,以往都是生成那种标准的,也就是比较纯净的二维码,现在老板的这个要求,一时让我无头绪,不过经过努力查找资料,发现PHP中有一个类库叫php qrcode,用它来生成这种二维码很是方便,于是就研究下,终于搞定了,下面把代码分享给大家.先来看看生成的效果: 具体的PHP代码,先调用phpqrcode.php,然后看代码里的注释,然后把 www.codesc.net这个网址修改成你自己的,还有logo图片替换成你的,再修改其它的

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

本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $urlToEncode="http://www.php.cn"; generateQRfromGoogle($urlToEncode); /**

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

吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图.但完美主义者会发现一些问题,比如显示排版时想让相片缩略图列表非常统一.整齐.和美观,比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办?再比如用户头像如何让缩略图比原图更清晰?或是如何

二维码的功能、特点及使用Java生成带logo的二维码

二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集:每个字符占有一定的宽度:具有一定的校验功能等.同时还具有对不同行的信息自动识

OpenGL ES学习笔记(二)&mdash;&mdash;平滑着色、自适应宽高及三维图像生成

首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--OpenGL ES的基本用法.绘制流程与着色器编译>中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项.本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实.首先,物体有各种颜色