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 相关文章推荐
一个PHP的String类代码
Apr 20 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
php堆排序(heapsort)练习
Nov 13 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
PHP与SQL语句常用大全
Dec 10 PHP
php简单实现单态设计模式的方法分析
Jul 28 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 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比较两个绝对时间的大小
2014/01/31 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
jquery each()源代码
2011/02/14 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
深入理解React高阶组件
2017/09/28 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
Python入门篇之条件、循环
2014/10/17 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python迭代dict的key和value的方法
2018/07/06 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Python 实现一个计时器
2020/07/28 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
党校自我鉴定范文
2013/10/02 职场文书
前台接待的工作职责
2013/11/21 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
计划生育宣传标语
2014/06/21 职场文书
销售竞赛活动方案
2014/08/23 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Redis实战高并发之扣减库存项目
2022/04/14 Redis