对图像的操作也是我们要学习的一个比较简单的内容,利用画布我们可以绘制点、线、文字,还可以生成验证码。
下面我们就开始学习画布吧。
首先是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);