步骤:
1、创建画布:在内存开辟空间,用于存储图像信息
2、绘制图像
3、输出图像:要用header()发送Content-type
4、释放资源
直接用浏览器请求该脚本,或将该脚本的url赋给src属性,都可以获取图像
** php配置文件
extension_dir="ext所在目录"
启动extension=php_gd2.dll
重启服务
** 在php代码里,判断扩展是否已经开启
var_dump( extension_loaded(‘gd‘) );
或者phpinfo(); 显示所有配置信息
或者 var_dump(gd_info());
或者 var_dump( function_exists(‘imagecreatetruecolor‘) );
** 画图流程
$width=500; $height=500;
$image = imagecreatetruecolor($width, $height); 创建画布
$red = imagecolorallocate($image, 255, 0, 0); 创建颜色
imagechar($image, $font, $x, $y, $c, $color); 开始绘画 在x y位置 写字符串$c的第一个字符 大小为$font单位唔知
imagechar($image, 5, 50, 50, ‘m‘, $red);
imagestring($image, 5, 200, 200, ‘heheda‘, $red); 写一个字符串
header(‘content-type:image/jpeg‘); 告诉浏览器以图像的形式来显示
imagejpeg($image); 输出图像,要和header里的格式一致
imagegif($image, ‘1.gif‘); 保存为图片 header里是jpeg,这里是gif,会出错
imagedestroy($image); 销毁资源
** 验证码
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
function randColor($image) { //返回随机颜色
return imagecolorallocate($image, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255) );
}
imagefilledrectangle($image, 0, 0, $width, $height, $white);
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
imagettftext($image, 20, 0, 50, 50, $black, ‘MSYHBD.TTF‘, ‘呵呵哒‘);
还有画直线、弧线、点等等一堆函数
** 缩略图
$filename = ‘1.jpg‘;
$src_image = imagecreatefromjpeg($filename); //通过原图像创建画布
$dst_width=50; $dst_height=50;
$dst_image = imagecreatetruecolor($dst_width, $dst_height); //以目标尺寸创建画布
list($src_w, $src_h) = getimagesize($filename); //返回图像信息数组
imagecopyresampled($dst_image, $src_image, 0,0,0,0,$dst_width, $dst_height, $src_w, $src_h); 重采样拷贝部分图像并调整大小
imagejpeg($dst_image, ‘abc.jpg‘); //保存
imagedestroy($src_image);
imagedestroy($dst_image);
** 水印
文字水印就是根据图片得到画布,然后画点东西
图片水印把一个图片拷贝到另一个图片上 imagecopymerge(...)