使用gd库之前,请确认php开启了gd扩展
phpinfo()
如果搜索gd,发现enabled(支持),即可。
GD Support
enabled
创建画布相关方法
imagecreate 创建画布
imagecreatetruecolor 创建一个真彩色画布
imagecreatefromjpeg 根据一张已有的jpeg图片创建画布
imagecreatefromgif 根据一张已有的gif图片创建画布
imagecreatefrompng 根据一张已有的png图片创建画布
画布相关操作函数
imagecolorallocate 分配一个颜色
imagefill 向画布填充颜色
imageline 画线段操作
imagerectangle 画矩形
imagearc 画圆弧线段
imagestring 根据系统字体写字
imagettftext 根据ttf格式的字体写字
图像输出相关函数
imagejpeg 以jpeg的格式输出图片到浏览器或保存成文件
imagepng 以png的格式输出图片到浏览器或保存成文件
imagegif 以gif的格式输出图片到浏览器或保存成文件
关闭画布操作
imagedestroy 销毁画布资源
辅助图像操作函数
imagesx 获得图片的宽度
imagesy 获得图片的高度
getimagesize 获得图片的宽度和高度等信息
创建有颜色的画布
//创建真彩画布
$canvas = imagecreatetruecolor(500,300);
//分配颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//填充颜色
imagefill($canvas,0,0,$color);
//告诉浏览器是图片
header("Content-type:image/jpg");
//输出图片
imagejpeg($canvas);
//保存图片
imagejpeg($canvas,"a.jpg");
画矩形
//创建真彩画布
$canvas = imagecreatetruecolor(500,300);
//分配颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//填充颜色
imagefill($canvas,0,0,$color);
//获取画矩形的颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//画矩形
imagerectangle($canvas,200,100,300,200,$color);
//告诉浏览器是图片
header("Content-type:image/jpg");
//输出图片
imagejpeg($canvas);
//保存图片
imagejpeg($canvas,"a.jpg");
//关闭画布资源
imagedestroy($canvas);
写字
//创建真彩画布
$canvas = imagecreatetruecolor(500,300);
//分配颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//填充颜色
imagefill($canvas,0,0,$color);
//获取画矩形的颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//画矩形
imagerectangle($canvas,200,100,300,200,$color);
//获取字体的颜色
$color = imagecolorallocate($canvas, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
//写字
imagestring($canvas, 20, 250, 150, "你好中国", $color);
//告诉浏览器是图片
header("Content-type:image/jpg;charset=utf8");
//输出图片
imagejpeg($canvas);
//保存图片
imagejpeg($canvas,"a.jpg");
//关闭画布资源
imagedestroy($canvas);
制作水印
imagecopymerge(目标图像,水印图像,目标x,目标y,水印x,水印y,水印截取x,水印截取y,水印透明度)
1)根据目标图片打开一个画布;
2)根据logo图片打开一个画布;
3)在目标图片上选择一个坐标基点;
4)在logo图片上也选择一个坐标基点(0,0坐标点);
5)将logo图片拖拽到目标图片中,并且将两个坐标基点对齐;
6)调整* logo图片的透明度;
7)保存图片;
8)关闭目标图片和logo图片的画布;
//打开目标图片
$dst = imagecreatefromjpeg("./a.jpg");
//打开水印图片
$pic = imagecreatefrompng("./b.png");
//获取水印图片的宽高
$w = imagesx($pic);
$h = imagesy($pic);
//进行合并两张图
imagecopymerge($dst, $pic, 100, 100, 0, 0, $w, $h, 30);
//进行浏览器设置
header("Content-type:image/jpeg");
//输出图片
imagejpeg($dst);
//保存图片
imagejpeg($dst,"c.jpg");
//关闭画布资源
imagedestroy($dst);
imagedestroy($pic);
制作缩略图
imagecopyresampled(画布,资源图片,画布x,画布y,图像x,图像y,截取画布x,截取画布y,图像x,图像y)
1)根据固定的宽度和高度创建一个目标画布;(200*100)
2)根据一张需要缩小的图片创建一个图像画布;
3)在目标画布上选择一个坐标基点(0,0坐标点);
4)在图像画布上也选择一个坐标基点(0,0坐标点);
5)将图像画布复制到目标画布中,并且将两个基点对齐;
6)调整图像画布的宽度和高度 与 目标画布的宽度和高度一致;
7)保存图像;
8)关闭目标画布和图像画布;
//创建画布
$canvas = imagecreatetruecolor(200, 100);
//打开资源画布
$resource = imagecreatefromjpeg("./a.jpg");
//使用缩略图函数
imagecopyresampled($canvas,$resource,0,0,0,0,200,100,imagesx($resource),imagesy($resource));
//输出图像到浏览器
header("Content-type:image/jpeg");
//输出
imagejpeg($canvas);
//保存
imagejpeg($canvas,"./b.jpg");
//销毁画布资源
imagedestroy($canvas);
imagedestroy($resource);