PHP基于GD库的图像处理方法小结


Posted in PHP onSeptember 27, 2016

本文实例讲述了PHP基于GD库的图像处理方法。分享给大家供大家参考,具体如下:

gd图像处理技术

extension=php_gd2.dll

创建画布

画布,一种资源型数据,可操作的图像资源

创建画布(新建)

imageCreate(width,height) //创建基于调色板的画布

imageCreateTrueColor(width,height) //创建真彩色的画布

基于图片创建画布(打开)

imageCreateFromJPEG( url)
imageCreateFromPNG(url)
imageCreateFromGIF(url)

操作画布

分配颜色:如果需要在画布上使用某种颜色,应该先将颜色分配到画布上。

(颜色标识 )= imageColorAllocate(img,r,g,b)

填充画布

imageFill(img,x,y,颜色标识)

输出画布

1. 输出到图片文件

2. 直接输出,需要告知浏览器输出为图片信息(header("Content-type:image/png;")

imagePNG(img[,url])
imageJPEG()
imageGIF()

销毁画布资源

imageDestroy(img)

<?php
header('content-type:image/png');
$img = imagecreate(300,300);
$color = imagecolorallocate($img,223,22,44);
imagefill($img,3,3,$color);
imagepng($img);
imagedestroy();
?>

运行效果图如下:

PHP基于GD库的图像处理方法小结

验证码实现

<?php
  header('content-type:image/png');
  $code = '123456789abcdefghijklmnpqrstuvwxvz';
  $length = strlen($code);
  $print = '';
  for($i=0; $i<4; $i++){
    $print.=$code[mt_rand(0,$length-1)];
  }
//  echo $print;
  $img = imagecreatefrompng('./str.png');
  $color = mt_rand(0,1)==1?imagecolorallocate($img,0,0,0):imagecolorallocate($img,255,255,255);
  //图片大小
  $img_width = imagesx($img);
  $img_height = imagesy($img);
  //字体大小
  $font = 5;
  $font_width = imagefontwidth($font);
  $font_height = imagefontheight($font);
  $fin_w = ($img_width-$font_width*4)/2;
  $fin_h = ($img_height-$font_height)/2;
  imagestring($img,$font,$fin_w,$fin_h,$print,$color);
  imagepng($img);
  imagedestroy($img);
?>
<image src="gd_string.php" onclick="this.src='gd_string.php?ra='+Math.random()"></image>

运行效果图如下:

 PHP基于GD库的图像处理方法小结

<?php
session_start();
$im=imagecreatetruecolor(80,30);
$str="";
for ($i=0;$i<4;$i++){
  $str.=dechex(rand(0,15));
}
$_SESSION['code']=$str;
$white=imagecolorallocate($im,255,255,255);
imagestring($im,rand(2,5),rand(0,70),rand(0,10),$str,$white);
//imagettftext($im,rand(0,5),rand(0,180),rand(0,100),rand(0,10),$white,"simhei.ttf",$str);
for($i=0;$i<20;$i++){
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,90),rand(0,20),rand(0,100),rand(0,100),$color);
}
header("content-type:image/png");
imagepng($im);
imagedestroy($im);
?>

注意:图片输出前后不能有额外输出

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

PHP 相关文章推荐
在普通HTTP上安全地传输密码
Jul 21 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
PHP文件上传操作实例详解
Sep 27 #PHP
PHP目录操作实例总结
Sep 27 #PHP
PHP文件操作实例总结
Sep 27 #PHP
PHP命名空间namespace用法实例分析
Sep 27 #PHP
PHP7标量类型declare用法实例分析
Sep 26 #PHP
PHP7新增运算符用法实例分析
Sep 26 #PHP
PHP7匿名类用法分析
Sep 26 #PHP
You might like
php学习之运算符相关概念
2011/06/09 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
Python中的闭包总结
2014/09/18 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
opencv+python实现均值滤波
2020/02/19 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
英语教学随笔感言
2014/02/20 职场文书
陈欧广告词
2014/03/14 职场文书
2015年节能减排工作总结
2015/05/14 职场文书