10.2 用图片处理函数画一张图
一起来看看下面有一张图:
我们该怎么把这张图给画出来呢。
我们按照步骤能够分析出来:
- 画图
- 准备好画这张图需要的颜色
- 填充背景颜色
- 画两条对角线
- 在上面画一个圆
- 在圆上面画一个矩型
- 保存图片
- 销毁资源
一、我们根据这张图推出出来步骤。我们来分析需要使用到的函数:
//使用 imagecreate 函数创建图片,返回资源
$img = imagecreate(500,500);
二、图片创建完成我们需要向图片资源填加颜色,需要使用到函数
$颜色变量 = imagecolorallocate ( resource $图片资源 , int $红 , int $绿 , int $蓝 )
红、绿、蓝是计算机里面操作图片的三个基本色。由这三个颜色来组合成我们肉眼所看到的所有颜色。
因此 imagecolorallocate 先输入图片资源,操作这个资源。为这个图片资源准备颜色。
就相当于在画画的时候,先把画布准备好,再准备颜料。
根据这张图,我们需要准备出来的颜色有:
- 绿
- 蓝
- 黑
- 棕
按照计算机的配色原则分配的话,我们下面的颜色分配的代码就要写成下面的样子:
//红
$red = imagecolorallocate($img, 255, 0, 0);
//绿
$green = imagecolorallocate($img, 0, 255, 0);
//蓝
$blue = imagecolorallocate($img, 0, 0, 255);
//棕
$yellow = imagecolorallocate($img, 121, 72, 0);
这中图片中需要用到的几个颜色的色值。
三、 将颜色添加到背景进行填充
imagefilledrectangle ( resource $图片资源 , int $点 1x 轴, int $点 1y 轴 , int $点 2x 轴 , int $点 2y 轴 , int $color )
这个函数需要涉及到几何的一点点知识。
- 一个点由 x 坐标和 y 坐标组成一个点
- 两个点可以组成一个直线
- 这条线如果不是水平或者垂直的线可以组成一个矩形
如下图:
点 1 和点 2,可以变成一个矩形。因此,我们输出两个坐标点,可以对画布进行填充。
如果要填充整个画布的话:
点 1 为 x 轴为画布的 0 位置,点 1 的 y 轴也为画布的 0 位置。
点 2 为 x 轴为画布的 500 位置,点 2 的 y 轴也为画布的 500 位置。
四、画两条对角线
画一条对角线,对角线是红色。
第一条对角线的坐标为 0 和 0,500 和 500
第二条对角线的坐标为 500 和 0,0 和 500
imageline($img, 0, 0, 500, 500, $red);
imageline($img, 500, 0, 0, 500, $blue);
五、在上面画一个圆
bool imagefilledellipse ( resource $图片资源 , int $圆心 x , int $圆心 y , int $圆的宽 , int $圆的高 , int $圆的颜色 )
imagefilledellipse($img, 250, 250, 200, 200, $yellow);
操作这个资源,写上圆心的坐标。然后写上长和宽。如果长宽一致为正圆,不一致则为椭圆。
六、在圆上面画一个矩型
imagefilledrectangle($img, 200, 200, 300, 300, $blue);
这个我们在上面一个中讲过,我们就不细说了。
七、保存图片
bool imagejpeg ( resource $image [, string $filename])
八、销毁图片资源
imagedestroy($img);
我们来看一下最终组合出来的代码:
<?php
//创建图片
$img = imagecreatetruecolor(500, 500);
//分配颜色
$red = imagecolorallocate($img, 255, 0, 0);
$green = imagecolorallocate($img, 0, 255, 0);
$blue = imagecolorallocate($img, 0, 0, 255);
$pur = imagecolorallocate($img, 255, 0, 255);
$yellow = imagecolorallocate($img, 121, 72, 0);
//填充背景
imagefilledrectangle($img, 0, 0, 500, 500, $green);
//画对角线
imageline($img, 0, 0, 500, 500, $red);
imageline($img, 500, 0, 0, 500, $blue);
//画圆
imagefilledellipse($img, 250, 250, 200, 200, $yellow);
//圆中间画矩形
imagefilledrectangle($img, 200, 200, 300, 300, $blue);
//保存图片,图片名为 haha.jpg
imagejpeg($img, 'haha.jpg');
//销毁资源
imagedestroy($img);
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论