创建图像
创建图像的一般流程:
1).设定标头,告诉浏览器你要生成的 MIME类型。
2).创建一个图像区域,以后的操作都将基于此图像区域。
3).在空白图像区域绘制填充背景。
4).在背景上绘制图形轮廓输入文本。
5).输出最终图形。
6).清除所有资源。
7).其他页面调用图像。
简化流程
- 设置格式
- 创建图像区域
- 生成背景
- 生成前景
- 输出图像
- 清除资源
生成图片
<?php
//第一步设置文件MIME类型
//将输出类型改成
header('Content-Type: image/png');
//第二步,创建一个图像区域,图像背景
//有两种穿件方式,,资源类型,一般要加上@符号,防止出错
//imagecreatetruecolor返回的是一个资源句柄\
//这个函数创建了一个图像区域,没有进行填充的时候,背景默认是黑色的
$im=imagecreatetruecolor(200, 200);
//第三步,在空白图像区域,绘制颜色,文字,线条
//填充色换掉,首先要有个颜色颜色填充器
//imagecolorallocate — 为一幅图像分配颜色
$blue=imagecolorallocate($im,0,102,255);
//将颜色填充到背景上去
imagefill($im,0,0,$blue);
//第四步,在背景上输入一些文字,线条等
$white=imagecolorallocate($im,255,255,255);
//画一条线段
imageline($im,0,0,200,200,$white);
//绘制文本
imagestring($im,5,100,100,'Mr.Lee',$white);
//第五步,输出最终图形
//以PNG格式将图像输出到浏览器或文件
imagepng($im);
//第六步,清空所有资源
imagedestroy($im);
?>
输出图像
<?php
echo '<img src="1.test.php" alt="">';
?>
实例之–创建验证码
问题
实例之–加载已有的图像
<?php
//加载已有的图像
header('Content-type: image/jpg');
//用Image标签字啊如图像,是可以编辑图像的
//在载入图像中,加入一个小水印
$im=imagecreatefromjpeg('image/test.jpg');
$white=imagecolorallocate($im,255,255,255);
imagestring($im,5,0,0,'http://www.test.com',$white);
imagejpeg($im);
imagedestroy($im);
?>
改进
<?php
define('__DIR__',dirname(__FILE__));
// 加载已有的图像
header('Content-type: image/jpg');
//用Image标签字啊如图像,是可以编辑图像的
//在载入图像中,加入一个小水印
// 用绝对路径速度最快,通过魔法常量可以移植到不同服务器上
$im=imagecreatefromjpeg(__DIR__.'\image\test.jpg');
$white=imagecolorallocate($im,255,255,255);
imagestring($im,5,0,0,'http://www.test.com',$white);
imagejpeg($im);
imagedestroy($im);
?>
使用系统字体
使用字体注意事项:
如需使用中文,字体必须支持中文
<?php
define('__DIR__',dirname(__FILE__));
// 加载已有的图像
header('Content-type: image/jpg');
//用Image标签字啊如图像,是可以编辑图像的
//在载入图像中,加入一个小水印
// 用绝对路径速度最快,通过魔法常量可以移植到不同服务器上
$im=imagecreatefromjpeg(__DIR__.'\image\test.jpg');
$white=imagecolorallocate($im,255,255,255);
// 字体文件
$font='C:\Windows\Fonts\impact.ttf';
// 采用系统提供的字体
// 第一个参数:图像句柄,第二个参数:字体大小,第三个参数旋转角度,第4,5个参数是坐标,第五个参数是:颜色,第六个参数是字体文件,第七个参数是:文本
imagettftext($im, 30, 30, 50, 100, $white, $font, 'hello');
imagejpeg($im);
imagedestroy($im);
?>
缩放图片
<?php
// 图像微缩
header('Content-type: image/jpg');
define('__DIR__',dirname(__FILE__));
list($width,$height)=getimagesize(__DIR__.'\image\test.jpg');
// 将原图缩放40%
$new_width=$width*0.5;
$new_height=$height*0.5;
// 创建一个新图
$im=imagecreatetruecolor($new_width,$new_height);
// 载入原图
$_im=imagecreatefromjpeg(__DIR__.'\image\test.jpg');
//imagecopyresampled — 重采样拷贝部分图像并调整大小
imagecopyresampled($im,$_im,0,0,0,0,$new_width,$new_height,$width,$height);
imagejpeg($im);
imagedestroy($im);
?>