图像操作——创建画布、绘制图形、矩形和文字

对图像的操作也是我们要学习的一个比较简单的内容,利用画布我们可以绘制点、线、文字,还可以生成验证码。

创建画布

下面我们就开始学习画布吧。

首先是header指令的改变了,根据文件来变,如下所示。

header("content-type:image/png");

创建画布需要imagecreatetruecolor($width,$height)来创建一个真彩色图像,返回一个图像的标识符(或者资源),代表了一个width,height的黑图。画布保存在内存中。

$img = imagecreatetruecolor(200,100);

然后为图像分配颜色imagecolorallocate()

//创建颜色
$color = imagecolorallocate($img, 255, 0, 0); 

给图像填充颜色imagefill()。

//填充区域
imagefill($img,0,0,$color);

最后输出、销毁图像
 

//输出
imagepng($img);
//销毁图像
imagedestroy($img);

画一个点

imagesetpixel()画一个点

随机画十个点:

for($i=0;$i<10;$i++){
    $x = rand(0,200);  //在画布坐标内
    $y = rand(0,100);
    imagesetpixel($img,$x,$y,$color);
}

画一条线

imageline()

$color = imagecolorallocate($img, 0, 0, 255);  //蓝色
imageline($img,0,0,200,100,$color);
//随机画10条线
$color = imagecolorallocate($img, 0, 0, 255);
for($i=0;$i<10;$i++){
       $x1 = rand(0,200);
       $y1 = rand(0,100);
       $x2 = rand(0,200);
       $y2 = rand(0,100);
       imageline($img,$x1,$y1,$x2,$y2,$color);
}

画一个矩形

imagerectangle() 或者 imagefilledrectangle()。两者的区别是前者画出的矩形是空心,而后者画出的矩形是实心的。

//画一个矩形1
$color = imagecolorallocate($img, 0, 255, 0);   //绿色
imagerectangle($img,30,30,150,90,$color);
//画一个矩形2
imagefilledrectangle($img,0,0,100,50,$color);

绘制文字

array imagettftext(resource $img,float $size,float $angle,int $x,int $y,int $color , string $fontfile,string $text)。其中img代表图像,size代表字体的尺寸,根据GD版本,为像素尺寸或点尺寸。angle角度制表示的角度,0度为从左到右读的文本,90度从下向上读,更高数值表示逆时针。由x,y表示的坐标定义了第一个字符的基本点。color代表颜色索引。fontfile表示想要使用的TrueType字体的路径。text为utf8编码的文本字符串。

//绘制文字
$text = "hello";
$color = imagecolorallocate($img,255,0,255);   //粉色
$font = "simsunb.ttf";
imagettftext($img,20,0,10,50,$color,$font,$text);

 

你可能感兴趣的:(图像操作——创建画布、绘制图形、矩形和文字)