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 minixml详解
Jul 19 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
Jun 05 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
Jan 21 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 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
第八节 访问方式 [8]
2006/10/09 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
SVG描边动画
2017/02/23 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python生成不重复随机值的方法
2015/05/11 Python
python生成大写32位uuid代码
2020/03/03 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
会计助理岗位职责
2014/02/17 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
护理自荐信
2019/05/14 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
Python+DeOldify实现老照片上色功能
2022/06/21 Python