01.php
<?php
/*
用windows画图板画图
1:创建一张画布,设定大小
2:创建颜料.(红,r 绿g 蓝b,三原色组成的. 三原色由弱到强各可以选0-255之间).
3:画线,写字,画图形,填充等.
4:保存成图片
5:销毁画布
用gd库来画图,仍是以上5个步骤.
*/
// 1:造画布,以资源形式返回
$im = p_w_picpathcreatetruecolor(300,200);
// 2: 创建颜料
$gray = p_w_picpathcolorallocate($im,100,100,100);
// 3: 填充画布
p_w_picpathfill($im,0,0,$gray);
// 4: 保存成图片
p_w_picpathpng($im,'./01.png');
// 5: 销毁画布
p_w_picpathdestroy($im);
echo 'ok';
-------------------
02.php
<?php
// gd库默认不开启,需要打开相关选项
// 如何检测gd库是否已开启?
print_r(gd_info());
//看到如下类似数组,可以判断gd库是否已开启
Array
(
[GD Version] => bundled (2.0.34 compatible) // gd库版本
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] =>
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[JIS-mapped Japanese Font Support] =>
)
-------------------
03.php
<?php
// 第一步:创建画布
// 1: 直接创建空白画布,指定宽和高两个参数
// 300*200的空白画布,返回值是资源类型
// 新建的画布,默认底色是纯黑色.
/*
$im = p_w_picpathcreatetruecolor(300,200);
p_w_picpathpng($im,'./02.png');
*/
$im=p_w_picpathcreatefromjpeg('./he.jpg');
$blue=p_w_picpathcolorallocate($im,0,0,255);
p_w_picpathline($im,0,0,800,600,$blue);
if(p_w_picpathjpeg($im,'./03.jpg')){
echo 'ok';
}
?>
-------------------
04.php
<?php
$im1=p_w_picpathcreatetruecolor(300,200);
$im2=p_w_picpathcreatetruecolor(600,400);
$blue=p_w_picpathcolorallocate($im1,0,0,255);
$red=p_w_picpathcolorallocate($im2,255,0,0);
?>
-------------------
05.php
<?php
$im=p_w_picpathcreatetruecolor(600,400);
$red=p_w_picpathcolorallocate($im,255,0,0);
p_w_picpathfill($im,0,0,$red);
header('content-type:p_w_picpath/jpeg');
p_w_picpathjpeg($im);
p_w_picpathdestroy($im);
?>
-------------------
06.php
<?php
// 第五步: 销毁画布
$im = p_w_picpathcreatetruecolor(300,200);
p_w_picpathdestroy($im);
?>
-------------------
07.php
<?php
/*
p_w_picpathline : 画线
p_w_picpathstring,p_w_picpathttftext: 写字
p_w_picpathfill — 区域填充
p_w_picpathfilledarc — 画一椭圆弧且填充
p_w_picpathfilledellipse — 画一椭圆并填充
p_w_picpathfilledpolygon — 画一多边形并填充
p_w_picpathfilledrectangle — 画一矩形并填充
p_w_picpathrectangle :画一个矩形
p_w_picpathcopy : 复制图片
p_w_picpathcopymerge :复制图片并合并(可以设透明度.)
p_w_picpathcopyresampled:合并并调整大小
*/
?>
-------------------
08.php
<?php
// 画线的学习
/*
bool p_w_picpathline ( resource $p_w_picpath , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
*/
// 1:创建画布
$im = p_w_picpathcreatefromjpeg('./home.jpg');
// 2:造颜料
$red = p_w_picpathcolorallocate($im,255,0,0);
$blue = p_w_picpathcolorallocate($im,0,0,255);
// 3: 画线
p_w_picpathline($im,0,0,670,503,$red);
p_w_picpathline($im,0,503,670,0,$blue);
// 4: 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
// 5: 销毁
p_w_picpathdestroy($im);
?>
-------------------
09.php
<?php
/*
写字
bool p_w_picpathstring ( resource $p_w_picpath , int $font , int $x , int $y , string $s , int $col )
resource $p_w_picpath :画布资源
int $font: 大小(1-5),字体是系统默认的,改变不了.
int $x , int $y : 代表写的第一个字符的左上角点的坐标.
string $s: 要写的内容
int $color:颜色
问:能否换行
答:不能.
问:能否写中文
答:不能.
问:能否指定字体
答:不能
*/
$im = p_w_picpathcreatefromjpeg('./home.jpg');
$blue = p_w_picpathcolorallocate($im,0,0,255);
p_w_picpathstring($im,5,100,100,'welcome to shahe',$blue);
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
-------------------
10.php
<?php
function randName($n = 6) {
if($n <= 0) {
return '';
}
$str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ0123456789';
$str = substr(str_shuffle($str),0,$n);
return $str;
}
// 做验证码
$im = p_w_picpathcreatetruecolor(80,30);
$gray = p_w_picpathcolorallocate($im,30,30,30);
$red = p_w_picpathcolorallocate($im,255,0,0);
p_w_picpathfill($im,0,0,$gray);
p_w_picpathstring($im,5,5,5,randName(4),$red);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
-------------------
11.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">
function chn() {
var img0 = document.getElementsByTagName('img')[0];
img0.src = '10.php?id=' + Math.random();
}
</script>
<style type="text/css">
</style>
</head>
<body>
<form>
验证码:<input type="text" name="code" /><img src="10.php" />
</form>
</body>
</html>
-------------------
12.php
<?php
/*
写中文
p_w_picpathttftext
需要先提供一个ttf字体库
array p_w_picpathttftext ( resource $p_w_picpath , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
*/
$im = p_w_picpathcreatefromjpeg('./home.jpg');
$blue = p_w_picpathcolorallocate($im,0,0,255);
p_w_picpathttftext($im,36,0,100,100,$blue,'./msyh.ttf','昌平水郡,远离城镇喧嚣');
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
?>
-------------------
13.php
<?php
/*
// 画椭圆
在一张画布定一个椭圆,需要4个数据
bool p_w_picpathellipse ( resource $p_w_picpath , int $cx , int $cy , int $w , int $h , int $color )
圆心: cx,cy
宽度: w
高度: h
// 画矩形
bool p_w_picpathrectangle ( resource $p_w_picpath , int $x1 , int $y1 , int $x2 , int $y2 , int $col )
*/
$im = p_w_picpathcreatetruecolor(400,800);
$gray = p_w_picpathcolorallocate($im,100,100,100);
$blue = p_w_picpathcolorallocate($im,0,0,255);
p_w_picpathfill($im,0,0,$gray);
// 画椭圆
p_w_picpathellipse($im,200,50,200,100,$blue);
// 画矩形
p_w_picpathrectangle($im,100,100,300,200,$blue);
// 画圆形
p_w_picpathellipse($im,200,300,200,200,$blue);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
-------------------
14.php
<?php
// 图片的复制
/*
案例:做一个底版照片的效果
如下:[x]是一张小图
[x]
利用小图作一张大图
{[x] [x]}
*/
/*
获取图片的宽度
p_w_picpathsx()
获取图片的高度
p_w_picpathsy()
*/
// 读取图片作为画布资源
$small = p_w_picpathcreatefrompng('./feng.png');
// 判断大小
$sx = p_w_picpathsx($small); // 小图的宽
$sy = p_w_picpathsy($small); // 小图的宽
// 造大图画布
$big = p_w_picpathcreatetruecolor(2*$sx + 20,$sy);
$gray = p_w_picpathcolorallocate($big,100,100,100);// 造灰色
// 铺大图
p_w_picpathfill($big,0,0,$gray);
// 复制小图到大图上.
/*
bool p_w_picpathcopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
*/
p_w_picpathcopy($big,$small,0,0,0,0,$sx,$sy);
p_w_picpathcopy($big,$small,$sx+20,0,0,0,$sx,$sy);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($big);
?>
-------------------
15.php
<?php
// 填充
$im = p_w_picpathcreatetruecolor(400,400);
$gray = p_w_picpathcolorallocate($im,100,100,100);
$blue = p_w_picpathcolorallocate($im,0,0,255);
$red = p_w_picpathcolorallocate($im,255,0,0);
$orange = p_w_picpathcolorallocate($im,248,224,143);
p_w_picpathfill($im,100,100,$gray);
// 画一个椭圆
p_w_picpathellipse($im,200,200,200,200,$blue);
// 填充椭圆
p_w_picpathfill($im,200,200,$red);
// 画一个矩形并直接填充.
p_w_picpathfilledrectangle($im,0,100,200,200,$blue);
// 画一个椭圆并直接填充
p_w_picpathfilledellipse($im,100,80,200,100,$orange);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
?>
-------------------
16.php
<?php
// 画一段圆弧并且填充
/*
bool p_w_picpathfilledarc ( resource $p_w_picpath , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color , int $style )
style的说明
PIE: 饼
CHORD: 弦
NOFILL:不填充
EDGED: 有边的
0 IMG_ARC_PIE
1 IMG_ARC_CHORD
2 IMG_ARC_NOFILL
4 IMG_ARC_EDGED
0000 (饼/弧)
0100 (填充)
-----
0100 = 4 -->扇形+填充
0001 (弦)
0010 (不填充)
--------
0011 = 3 (直线)
0001 (弦)
0100 (填) --->三角+填充效果
-----
0101 = 5
0000 (弧)
0010 (不填)
-----
0010 -> 2->一段弧线,但不填.
*/
$im = p_w_picpathcreatetruecolor(400,400);
$gray = p_w_picpathcolorallocate($im,100,100,100);
$blue = p_w_picpathcolorallocate($im,0,0,255);
p_w_picpathfill($im,0,0,$gray);
p_w_picpathfilledarc($im,200,200,200,200,45,135,$blue,2);
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($im);
?>
-------------------
17.php
<?php
// 图片的复制
/*
案例:做一个底版照片的效果
如下:[x]是一张小图
[x]
利用小图作一张大图
{[x] [x]}
*/
/*
获取图片的宽度
p_w_picpathsx()
获取图片的高度
p_w_picpathsy()
*/
// 读取图片作为画布资源
$small = p_w_picpathcreatefrompng('./feng.png');
// 判断大小
$sx = p_w_picpathsx($small); // 小图的宽
$sy = p_w_picpathsy($small); // 小图的宽
// 造大图画布
$big = p_w_picpathcreatetruecolor(2*$sx + 20,$sy);
$gray = p_w_picpathcolorallocate($big,100,100,100);// 造灰色
// 铺大图
p_w_picpathfill($big,0,0,$gray);
// 复制小图到大图上.
/*
bool p_w_picpathcopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
*/
p_w_picpathcopy($big,$small,0,0,0,0,$sx,$sy);
p_w_picpathcopy($big,$small,$sx+20,0,0,0,$sx,$sy);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($big);
?>
-------------------
18.php
<?php
// 来点水印效果.
/*
函数的参数和p_w_picpathcopy一样,
差在最后一个参数: $pct 代表透明度.
bool p_w_picpathcopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
*/
$big = p_w_picpathcreatefromjpeg('./home.jpg');
$bx = p_w_picpathsx($big);
$by = p_w_picpathsy($big);
$small = p_w_picpathcreatefrompng('./feng.png');
$sx = p_w_picpathsx($small);
$sy = p_w_picpathsy($small);
// 加文字
$blue = p_w_picpathcolorallocate($big,0,0,255);
p_w_picpathttftext($big,16,0,100,100,$blue,'./msyh.ttf','昌平水郡,凤姐叫你来买房');
p_w_picpathcopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37);
// 输出
header('content-type: p_w_picpath/jpeg');
p_w_picpathjpeg($big);
?>
-------------------
19.php
<?php
// 生成缩略图
/*
bool p_w_picpathcopyresampled ( resource $dst_p_w_picpath , resource $src_p_w_picpath , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
*/
$feng = p_w_picpathcreatefrompng('./feng.png');
$fx = p_w_picpathsx($feng); // 获取宽度
$fy = p_w_picpathsy($feng); // 获取高度
// 造一块小画布
$sx = $fx/2;
$sy = $fy/2;
$small = p_w_picpathcreatetruecolor($sx,$sy);
// 把大画布粘过来,同时缩略粘过来
p_w_picpathcopyresampled($small,$feng,0,0,0,0,$sx,$sy,$fx,$fy);
if(p_w_picpathpng($small,'./xiaofeng.png')) {
echo '保存成功';
} else {
echo '保存失败';
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。