PHP图像处理绘图、水印、验证码、图像压缩技术实例总结
文章主要介绍了PHP图像处理技术,结合实例形式总结分析了php绘图、水印、验证码、图像压缩等相关函数、功能与图形绘制实现技巧,需要的朋友可以参考下:1、绘图 场景:...
文章主要介绍了PHP图像处理技术,结合实例形式总结分析了php绘图、水印、验证码、图像压缩等相关函数、功能与图形绘制实现技巧,需要的朋友可以参考下:
1、绘图
场景: 验证码、图像水印、图像压缩处理
php绘图坐标体系是从0,0点越向右值越大,越向下值越大
需要开启php的gd2扩展 php.ini 中
参数1:图像资源(画布)
参数2:开始的x轴坐标
参数3:开始的y轴坐标
参数4:结束的x轴坐标
参数5:结束的y轴坐标
参数6:线条的颜色
(1)绘制线条:imageline($p1, $p2, $p3, $p4, $p5, $6)
(2)绘制三角形:imageline($p1, $p2, $p3, $p4, $p5, $6)// 需要3次
(3)绘制矩形:imagerectangle($p1, $p2, $p3, $p4, $p5, $6)
(3.1)绘制并填充矩形:imagefilledrectangle($p1, $p2, $p3, $p4, $p5, $6)
(4)绘制椭圆:imageellipse($p1, $p2, $p3, $p4, $p5, $6)
(4.1)绘制并填充椭圆:imagefilledellipse($p1, $p2, $p3, $p4, $p5, $6)
参数1:目标图像
参数2:原始图像
参数3:目标图像坐标x
参数4:目标图像坐标y
参数5:原始图像开始坐标x
参数6:原始图像开始坐标y
参数7:原始图像宽度
参数8:原始图像高度
(5)将图片绘制到画布上:imagecopy ( $p1, $p2, $p3, $p4, $p5, $6, $7, $8)
参数1:目标图像
参数2:字体 1,2,3,4 或 5,则使用内置字体
参数3:目标图像坐标x
参数4:目标图像坐标y
参数5:字符,文字
参数6:颜色
(6)绘制字符串:imagestring( $p1, $p2, $p3, $p4, $p5, $6)// 向画布写入字符,文字
参数1:图像资源
参数2:字体大小
参数3:倾斜角度
参数4:x轴坐标
参数5:y轴坐标
参数6:字体颜色
参数7:字体文件
参数8:文字
(7)绘制中文:imagettftext($p1, $p2, $p3, $p4, $p5, $6, $7, $8)
参数1:图像资源
参数2:弧形开始x坐标
参数3:弧形开始y坐标
参数4:弧形宽度
参数5:弧形高度
参数6:弧形开始角度
参数7:弧形结束角度
参数8:绘图颜色
(8)绘制弧形:imagearc($p1, $p2, $p3, $p4, $p5, $6, $7, $8)// 三点钟的位置是起点(0度), 顺时针方向绘画
实例 - 弧形?
// 创建一个 200X200 的图像
$img
= imagecreatetruecolor(200, 200);
// 分配颜色
$white
= imagecolorallocate(
$img
, 255, 255, 255);
$black
= imagecolorallocate(
$img
, 0, 0, 0);
// 画一个黑色的圆
imagearc(
$img
, 100, 100, 150, 150, 0, 360,
$black
);
// 将图像输出到浏览器
header(
"Content-type: image/png"
);
imagepng(
$img
);
// 释放内存
imagedestroy(
$img
);
参数1:图像资源
参数2:弧形开始x坐标
参数3:弧形开始y坐标
参数4:弧形宽度
参数5:弧形高度
参数6:弧形开始角度
参数7:弧形结束角度
参数8:绘图颜色
参数9:填充样式
- IMG_ARC_PIE: 用直线连接产生圆形边界
- IMG_ARC_CHORD: 用直线连接了起始和结束点
- IMG_ARC_NOFILL: 明弧或弦只有轮廓,不填充
- IMG_ARC_EDGED:用直线将起始和结束点与中心点相连,和 IMG_ARC_NOFILL 一起使用是画饼状图轮廓的好方法(而不用填充)
(9)绘制弧形并填充:imagefilledarc($p1, $p2, $p3, $p4, $p5, $6, $7, $8, $9)// 三点钟的位置是起点(0度), 顺时针方向绘画
实例 - 弧形填充?
// 创建图像
$image
= imagecreatetruecolor(100, 100);
// 分配一些颜色
$white
= imagecolorallocate(
$image
, 0xFF, 0xFF, 0xFF);
$gray
= imagecolorallocate(
$image
, 0xC0, 0xC0, 0xC0);
$darkgray
= imagecolorallocate(
$image
, 0x90, 0x90, 0x90);
$navy
= imagecolorallocate(
$image
, 0x00, 0x00, 0x80);
$darknavy
= imagecolorallocate(
$image
, 0x00, 0x00, 0x50);
$red
= imagecolorallocate(
$image
, 0xFF, 0x00, 0x00);
$darkred
= imagecolorallocate(
$image
, 0x90, 0x00, 0x00);
// 创建 3D 效果
for
(
$i
= 60;
$i
> 50;
$i
--) {
imagefilledarc(
$image
, 50,
$i
, 100, 50, 0, 45,
$darknavy
, IMG_ARC_PIE);
imagefilledarc(
$image
, 50,
$i
, 100, 50, 45, 75 ,
$darkgray
, IMG_ARC_PIE);
imagefilledarc(
$image
, 50,
$i
, 100, 50, 75, 360 ,
$darkred
, IMG_ARC_PIE);
}
imagefilledarc(
$image
, 50, 50, 100, 50, 0, 45,
$navy
, IMG_ARC_PIE);
imagefilledarc(
$image
, 50, 50, 100, 50, 45, 75 ,
$gray
, IMG_ARC_PIE);
imagefilledarc(
$image
, 50, 50, 100, 50, 75, 360 ,
$red
, IMG_ARC_PIE);
// 输出图像
header(
'Content-type: image/png'
);
imagepng(
$image
);
imagedestroy(
$image
);
效果
2、水印
使用imagestring()或者imagettftext()
实例 - 图片加字?
// 建立一幅 100X30 的图像
$im
= imagecreate(100, 30);
// 白色背景和蓝色文本
$bg
= imagecolorallocate(
$im
, 255, 255, 255);
$textcolor
= imagecolorallocate(
$im
, 0, 0, 255);
// 把字符串写在图像左上角
imagestring(
$im
, 5, 0, 0,
"Hello world!"
,
$textcolor
);
// 输出图像
header(
"Content-type: image/png"
);
imagepng(
$im
);
-
PHP实现高清晰度无损图片压缩功能的代码
经常会用到把上传的大图片压缩,特别是体积,在微信等APP应用上,也默认都是有压缩的,那么,怎么样对图片大幅度压缩却仍能保持较高的清晰度呢?...
-
用PHP处理png图片白色背景色改为透明色的实例代码
文章主要介绍了php 处理png图片白色背景色改为透明色的实例代码,文中通过实例代码给大家介绍了用PHP的GD库把图片的背景替换成透明背景,需要的朋友参考下...
-
关于PHP往mysql数据库中批量插入数据实例教程
文章主要给大家介绍了关于php往mysql中批量插入数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧...
-
Php两点地理坐标距离的计算方法和具体代码
文章主要为大家详细介绍了php两点地理坐标距离的计算方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下php计算两点地理坐标距离的具体代码,具体内容如下功能:根据圆周率和...
-
PHP获取HTTP body内容的方法
今天小编就为大家分享一篇PHP获取HTTP body内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧有时候我们获取数据时需要根据Header中的格式来解析,比...
-
PHP面向对象程序设计中获取对象属性的3种方法实例分析
文章主要介绍了PHP获取对象属性的三种方法,结合实例形式分析了php面向对象程序设计中获取对象属性的常见操作技巧,需要的朋友可以参考下。PHP获取对象属性的三种方法,具体如下...
-
php5.5新增的yield关键字功能与相关使用技巧
文章主要介绍了PHP yield关键字功能与用法,结合实例形式分析了php5.5新增的yield关键字功能与相关使用技巧,需要的朋友可以参考下实例讲述PHP yield关键字功能与用法具体如下:y...
-
Windows7下IIS+php配置教程详细介绍
文章主要为大家详细介绍了Windows7下IIS+php配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
-
PHP序列化的四种实现方法与横向对比教程
在PHP中,序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。本文讲述PHP序列化的四种方案,感兴趣的可以了解一下一、PHP 序列化变量的 4 种方法序列化是将变量转...
-
PHP基于Redis消息队列实现的消息推送的方法
文章主要介绍了php基于Redis消息队列实现的消息推送的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧基本知识点重点用到了以下命令实现我们...