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 相关文章推荐
PHPMailer安装方法及简单实例
Nov 25 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
php中大括号作用介绍
Mar 22 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
php汉字转拼音的示例
Feb 27 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 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记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
vue slots 组件的组合/分发实例
2018/09/06 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
焊接专业毕业生求职信
2013/10/01 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
房产分割协议书范文
2014/11/21 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
单位工作证明范本
2015/06/15 职场文书
月考总结与反思
2015/10/22 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
java版 简单三子棋游戏
2022/05/04 Java/Android