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


Posted in PHP onSeptember 11, 2016

本文实例讲述了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 相关文章推荐
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
php7 安装yar 生成docker镜像
May 09 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
PHP函数引用返回的实例详解
Sep 11 #PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 #PHP
详解PHP中array_rand函数的使用方法
Sep 11 #PHP
PHP入门教程之上传文件实例详解
Sep 11 #PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 #PHP
PHP入门教程之表单与验证实例详解
Sep 11 #PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 #PHP
You might like
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
js实现返回顶部效果
2017/03/10 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
求职信内容怎么写
2014/05/26 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2016年父亲节寄语
2015/12/04 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android