• GD库处理图像


    PHP5中,动态图象的处理要比以前容易得多。PHP5php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了。PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像处理的一些有用的JPG功能。

    一般生成的图形,通过PHP的文档格式存放,但可以通过HTML的图片插入方式SRC来直接获取动态图形。比如,验证码、水印、微缩图等。

    一.创建图像

    创建图像的一般流程:

    1).设定标头,告诉浏览器你要生成的MIME类型。

    2).创建一个图像区域,以后的操作都将基于此图像区域。

    3).在空白图像区域绘制填充背景。

    4).在背景上绘制图形轮廓输入文本。

    5).输出最终图形。

    6).清除所有资源。

    7).其他页面调用图像。

      //1 设定标头
      //header("Content-type:text/html;charset=utf-8");  //不写就是默认,默认的是html文档
      header("Content-type:image/png;");
      
      //2 创建一个图形区域,图像背景
      //两种方式
      $im = imagecreatetruecolor(200, 200); //返回的是资源句柄
      
      //3 在空白图像区域绘制填充背景
      //填充颜色换掉,首相要有个颜色填充器
      $blue = imagecolorallocate($im, 0, 102, 255);
      //将颜色填充到背景上去,imagefill();
      imagefill($im, 0, 0, $blue);
      
      //4 在背景上绘制图形轮廓输入文本
      $white = imagecolorallocate($im, 255, 255, 255);
      //画一条线imageline();
      imageline($im, 0, 0, 200, 200, $white);
      imageline($im, 0, 200, 200, 0, $white);
      //绘制文本imagestring();二号字体,x y位置,文本,颜色
      imagestring($im, 5, 70, 20, 'Mr.dang', $white);
      
      //5 输出最终图形
      imagepng($im);  //输出png格式图片
    
      //6 清空资源
      imagedestroy($im);

    7).其他页面调用图像:只需要在另一个php文件调用即可,输出img标签,src写上边创建的图像的文件地址

      //demo2.php
      echo '<img src="demo.php" alt="图形" title="图形" />';

    二.简单小案例

    1 验证码

    /*简单验证码案例  */
      
      //1 获取四位数字字母混编
      //mt_rand();获取随机数
      //dechex();十进制转换为十六进制
      for($i=0;$i<4;++$i){
          $nmsg .= dechex(mt_rand(0, 15));
      }
      
      //2 将上边的变成图片
      header('Content-type:image/png');
      $im = imagecreatetruecolor(75, 25);
      $blue = imagecolorallocate($im, 0, 102, 255);
      $white = imagecolorallocate($im, 255,255,255);
      imagefill($im, 0, 0, $blue);
      imagestring($im, 5, 20, 5, $nmsg, $white);
      imagepng($im);
      imagedestroy($im);

    2 加载已有图像:这个图像事先防止于和php文件同一目录下,可以用相对或绝对地址调用,建议用绝对因为更快,我们的示例中用的是绝对,用魔法常量赖实现的

    /*加载已有图像  */
    //  //
    //   define('URL', dirname(__FILE__).'\');
    //   header('Content-type:image/png');
    //   $im = imagecreatefrompng(URL.'2.png');
    //   $white = imagecolorallocate($im, 255, 255, 255);
    //   imagestring($im, 5, 10, 10, 'http://www.dang.com', $white);
    //   imagepng($im);
    //   imagedestroy($im);

    3 采用本机系统中的字体

    /*采用系统提供字体  */
    //   $font = 'C:WindowsFontsmsyh.ttc'; //把路径传进去即可
    //   define('URL', dirname(__FILE__).'\');
      
    //   header('Content-type:image/png');
    //   $im = imagecreatefrompng(URL.'2.png');
    //   $white = imagecolorallocate($im, 255, 255, 1);
    //   imagettftext($im,40,10,50,100,$white,$font,'hello,党兴明'); //第一个数字字体大小,第二个旋转角度
    //   imagepng($im);
    //   imagedestroy($im);

    4 微缩图

    /*微缩图问题  */
      define('URL', dirname(__FILE__).'\');
      header('Content-type:image/png');
      //1 取得图像大小
      list($width,$height) = (getimagesize(URL.'2.png'));  //返回的是数组,里边包含尺寸
      //2 将原图的宽高缩小百分比
      $_width = $width*0.4;
      $_height = $height*0.4;
      
      //3 创建一个新图
      $im = imagecreatetruecolor($_width, $_height);
      
      //4 载入原图,将原图复制到新图上去
      //载入
      $_im = imagecreatefrompng(URL.'2.png');
      //将原图重新采样,拷贝到新图上,最后按0.4的比例输出
      //imagecopyresampled();重新采样拷贝图片并调整大小
      imagecopyresampled($im, $_im, 0, 0, 0, 0, $_width, $_height, $width, $height);
      
      //5 输出销毁
      imagepng($im);
      imagedestroy($im);
      imagedestroy($_im);

    注意:以上示例中都用的png格式的图片,可以用其他格式的(只要把函数中的png替换就好)。但jpg在函数中要写jpeg,bmp要写wbmp。

  • 相关阅读:
    android.mk文件里的通配符
    vi常用命令
    如何用ndk-stack察看android崩溃堆栈
    初识lua
    c++标准库中几个常见的数据结构的区别和应用规则
    玩转ubuntu FAQ
    c++0x新特性实例(比较常用的)
    cocos2d-x的Android工程开启c++0x特性
    随笔 — 致2018.
    CPU或内存占用过高时,发生了什么
  • 原文地址:https://www.cnblogs.com/by-dxm/p/6155734.html
Copyright © 2020-2023  润新知