当前位置:职场发展 > PHP图像处理绘图、水印、验证码、图像压缩技术实例总结

PHP图像处理绘图、水印、验证码、图像压缩技术实例总结

  • 发布:2023-09-29 05:18

  文章主要介绍PHP图像处理技术,结合实例总结分析PHP绘图、水印、验证码、图像压缩等相关功能、功能和图形需要绘图实现技巧的朋友可以参考以下:

1。绘图

  场景:验证码、图片水印、图片压缩处理

  php绘图坐标系从0,0点开始,向右移动数值较大,向下移动数值较大

  需要在php.ini中启用php的gd2扩展

  参数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度),画顺时针

  示例 - 弧形?

  1. // 创建 200X200 图像
  2. $img = imagecreatetruecolor(200, 200);
  3. // 指定颜色
  4. $白色 = imagecolorallocate($img, 255, 255, 255);
  5. $黑色 = imagecolorallocate($img, 0, 0, 0);
  6. //画一个黑色圆圈
  7. imagearc($img, 100, 100, 150, 150, 0, 360, $黑色);
  8. // 将图像输出到浏览器
  9. header("内容类型:图片/png");
  10. imagepng($img);
  11. //释放内存
  12. 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度),顺时针绘制

  示例 - 圆弧填充?

  1. // 创建图像
  2. $图像 = imagecreatetruecolor(100, 100);
  3. // 指定一些颜色
  4. $白色 = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
  5. $灰色 = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
  6. $darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
  7. $海军蓝 = imagecolorallocate($image, 0x00, 0x00, 0x80);
  8. $darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
  9. $红色 = imagecolorallocate($image, 0xFF, 0x00, 0x00);
  10. $暗红色 = imagecolorallocate($image, 0x90, 0x00, 0x00);
  11. // 创建 3D 效果
  12. 对于 ($i= 60; $i > 50; $i-- ) {
  13. imagefilledarc($image, 50, $i, 100, 50, 0, 45, $darknavy, IMG_ARC_PIE);
  14. imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $darkgray, IMG_ARC_PIE);
  15. imagefilledarc($图像, 50, $i, 100, 50, 75, 360 , $深红色, IMG_ARC_PIE);
  16. }
  17. imagefilledarc($图像, 50, 50, 100, 50, 0, 45, $海军, IMG_ARC_PIE);
  18. imagefilledarc($图像, 50, 50, 100, 50, 45, 75 , $灰色, IMG_ARC_PIE);
  19. imagefilledarc($image, 50, 50, 100, 50, 75, 360, $red, IMG_ARC_PIE);
  20. //输出图像
  21. header('内容类型:图片/png');
  22. imagepng($image);
  23. imagedestroy($image);

  效果

2、水印

  使用imagestring()或者imagettftext()

  实例 - 图片加字?

  1. //建立一张100X30的图像
  2. $im = imagecreate(100, 30);
  3. // 白色背景和蓝色文本
  4. $bg = imagecolorallocate($im, 255, 255, 255);
  5. $textcolor = imagecolorallocate($im, 0, 0, 255);
  6. //将字符串写入图像左上角
  7. imagestring($im, 5, 0, 0, "你好世界!", $textcolor);
  8. // 输出图像
  9. header("内容类型:图片/png");
  10. imagepng($im);

  

相关文章