<?php
/*
使用php的gd库处理图像
首先要开启gd库,但是套件可以直接点勾上就可以了
作图的步骤:
1.创建画布
2.准备颜色
3.画图(包括字符串)
4.显示图像/存储图像
5.销毁画布资源
*/
header("content-type: image/png;");//告诉浏览器文件类型
// $im = imagecreatetruecolor(800, 600);//创建画布
$im = imagecreatefromjpeg('123.jpg');//也可以用一张图片当做背景
//画像素点
//第一个参数:在哪张画布上画
//后面参数:颜色值
$red = imagecolorallocate($im, 255, 0, 0);
$green = imagecolorallocate($im, 0, 255, 0);
$blue = imagecolorallocate($im, 0, 0, 255);
$white = imagecolorallocate($im, 255, 255, 255);
$yellow = imagecolorallocate($im, 255, 255, 0);
$purple = imagecolorallocate($im, 255, 0, 255);
//第一个参数:在哪张画布上画
//第二、三个参数:起始坐标(画布在第四象限)
//第四个参数:用什么颜色
imagesetpixel($im, 50, 60, $white);
//画线段
//前两个数字是起始坐标,后两个数字是结束坐标
imageline($im, 20, 30, 60, 80, $white);
//画矩形:也是两个坐标
//一条对角线能确定一个矩形
//第一种是画一个无填充色的矩形
//第一种是画一个填充绿色的矩形(绿色的色块)
imagerectangle($im, 120, 30, 230, 140, $red);
imagefilledrectangle($im, 240, 30, 350, 140, $green);
//画椭圆/圆
//前两个值是圆心坐标,后两个值是宽、高
//第二种是画圆形色块
imageellipse($im, 415, 85, 110, 110, $blue);
imagefilledellipse($im, 535, 85, 110, 110, $yellow);
//画多边形
//先建一个数组,数组每两个数为一个坐标,每个坐标代表一个多边形的角
//count($points)/2 表示假如有6个数,除以2就是3,就表示这是一个三角形
//第二种写法是填充颜色的多边形
$points =
[
50, 120,
50, 260,
150, 260,
];
imagepolygon($im, $points, count($points)/2, $purple);
$points =
[
200, 120,
200, 260,
350, 260,
];
imagefilledpolygon($im, $points, count($points)/2, $yellow);
//画圆弧
//参数:前两个是圆心,第3、4个是宽、高,第5、6个角度,角度可以是负数
//其实画圆弧相当于画一个扇形,然后不显示两条直线
//第二个是填充颜色的圆弧,多最后一个参数,是填充模式,把这个圆弧填充成什么形状的色块
/*
style有4个常量,
1.IMG_ARC_PIE 扇形
2.IMG_ARC_CHORD 三角形(除开圆弧的那部分,剩下扇形成三角形)
3.IMG_ARC_NOFILL 圆弧本身
4.IMG_ARC_EDGED 扇形
*/
imagearc($im, 150, 350, 150, 150, 0, 90, $white);
imagefilledarc($im, 150, 350, 150, 150, 180, 270, $red, IMG_ARC_PIE);
//写字:字符串(非中文)
//第一个值是字号,第2/3个是坐标,第四个是要写的字符串,第五是眼色
//字号就是1 2 3 4 5 ,5种,5号最大
imagestring($im, 5, 50, 400, 'Chinese', $yellow);
//写字:一个字符(非中文)
imagechar($im, 5, 50, 450, 'A', $yellow);
//写中文
//1.字体大小 2. 角度 3-4.坐标 5.颜色 6.字体名字 7.要写的内容
//字体文件要用绝对路径C:\Windows\Fonts,复制字体文件到项目中然后用相对路径报错:无法找到字体
//字体名称不能用中文写,否则不显示
imagettftext($im, 30, 30, 500, 400, $white, 'C:/Windows/Fonts/simsun.ttc', '一带一路');
imagepng($im);//有两个参数,有第二个就是存储,没有就是显示
imagedestroy($im);//销毁画布资源
?>
image.png
image.png
网友评论