PHP入门教程之图像处理技巧分析

5年以前  |  阅读数:1092 次  |  编程语言:PHP 

本文实例讲述了PHP图像处理。分享给大家供大家参考,具体如下:

Demo1.php


    <?php
      //一般生成的图像可以是 png,jpg,gif,bmp
      //jpeg,wbmp
      //第一步,设置文件MIME类型,输出类型 text/html 类型是网页类型,默认可以不写
      //将输出类型改成图像流
      header('Content-Type:image/png;');
      //第二步,创建一个图形区域,图像背景
      //有两种创建方式,资源类型,一般要加上 @ 符号,防止出错
      //imagecreatetruecolor 返回的是一个资源句柄
      //这个函数创建了一个图像的区域,没有进行填充的时候,背景默认是黑色的
      $im = imagecreatetruecolor(200,200);
      //第三步,有空白图像区域,绘制颜色,文字叫,线条啊。。。
      //填充色换掉,首先要有个颜色填充器
      //imagecolorallocate -- 为一幅图像分配颜色
      $blue = imagecolorallocate($im,0,102,255);
      //将这个 blue 颜色填充到背景上去
      //imagefill -- 区域填充
      imagefill($im,0,0,$blue);
      //第四部,在蓝色的背景上输入一些线条,文字等
      $white = imagecolorallocate($im,255,255,255);
      //imageline -- 画一条线段
      imageline($im,0,0,200,200,$white);
      imageline($im,200,0,0,200,$white);
      //imagestring -- 水平地画一行字符串
      imagestring($im,5,80,20,'Mr.One',$white);
      //第五步,输出最终图形
      //以 PNG 格式将图像输出到浏览器或文件
      imagepng($im);
      //第六步,我要将所有的资源全部清空
      imagedestroy($im);
    ?>

Demo2.php


    <?php
      //src 可以插入各样类型的图片
      //Demo1.php 其实就是一张 png 图片
      header('Content-Type:text/html; charset=gbk');
      echo '<img src="Demo1.php" alt="图形"/>';
    ?>

Demo3.php


    <?php
      //简单的验证码
      //随机数
      //为什么要循环 0-15 之间的数呢?
      //因为要实现最简单的字母和数字混搭
      //十六进制 0-9 a-f
      //dechex -- 十进制转换为十六进制
      //创建一个四位的验证码
      for($i=0;$i<4;$i++){
        $nmsg .= dechex(mt_rand(0,15));
      }
      //echo $nmsg;
      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);
    ?>

Demo4.php


    <?php
      define('__DIR__',dirname(__FILE__).'\\');
      //加载已有的图像
      header('Content-Type:image/png;');
      //header('Content-Type:image/jpeg;');
      //imagecreatefrompng -- 从 PNG 文件或 URL 新建一图像
      //用 image 载入图像,是可以编辑图像
      //在载入的图像中,加入一个小水印
      $im = imagecreatefrompng(__DIR__.'ss.png');
      //$im = imagecreatefromjpeg('xx.jpg');
      $white = imagecolorallocate($im,255,255,255);
      imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white);
      imagepng($im);
      //imagejpeg($im);
      imagedestroy($im);
    ?>

Demo5.php


    <?php
      define('__DIR__',dirname(__FILE__).'\\');
      //加载已有的图像
      header('Content-Type:image/png;');
      //header('Content-Type:image/jpeg;');
      //imagecreatefrompng -- 从 PNG 文件或 URL 新建一图像
      //用 image 载入图像,是可以编辑图像
      //在载入的图像中,加入一个小水印
      $im = imagecreatefrompng(__DIR__.'ss.png');
      //$im = imagecreatefromjpeg('xx.jpg');
      $white = imagecolorallocate($im,255,255,255);
      imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white);
      //font 字体还必须支持中文
      $font = 'C:\WINDOWS\Fonts\SIMHEI.TTF';
      //字体文件
      $text = iconv('gbk','utf-8','阅谁问君诵');
      //采用系统提供的字体
      //第二参数,是字体的大小,第三个参数是旋转角度,4,5参数是坐标
      imagettftext($im,20,10,50,100,$white,$font,$text);
      imagepng($im);
      //imagejpeg($im);
      imagedestroy($im);
    ?>

Demo6.php


    <?php
      //微缩图,不但表面的大小改变了,容量也改变了
      //是真的改变了,不是表面的缩小
      define('__DIR__',dirname(__FILE__).'\\');
      header('Content-Type:image/png;');
      //getimagesize -- 取得图像大小
      //获取到了原图的长度和高度
      list($width,$height) = getimagesize(__DIR__.'ss.png');
      //将原图缩放成 40%
      $_width = $width * 0.4;
      $_height = $height * 0.4;
      //创建一个新图
      $im = imagecreatetruecolor($_width,$_height);
      //下面的工作是,载入原图,将原图复制到新图上去
      //载入原图
      $_im = imagecreatefrompng(__DIR__.'ss.png');
      //将原图重新采样,拷贝到新图上,最后按 0.4 的比例输出
      //imagecopyresampled -- 重采样拷贝部分图像并调整大小
      imagecopyresampled($im,$_im,0,0,0,0,$_width,$_height,$width,$height);
      //将新图输出
      imagepng($im);
      //第二个参数不需要,直接 null 过度
      //第三个参数,是 0-100 来调节 JPG 的清晰度
      //如果是 imagepng,那么全部都是高清
      //imagejpeg($im,null,50);
      //销毁
      imagedestroy($im);
      imagedestroy($_im);
    ?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例