snowfox373 2007-10-18 13:49
PHP实例:实现给上传图片加水印图案
用PHP给上传图片加水印的程序是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。如果你对PHP的GD库比较熟悉,看懂这篇文章一点都不难了![code]/*****************************************************
lx"l-k#Rkp*WK
参数说明:
Wl-WU7Id
`Q
$max_file_size : 上传文件大小限制, 单位BYTE koe2Va] S`
$destination_folder : 上传文件路径 0k{Q7v2AV!](O
$watermark : 是否附加水印(1为加水印,其他为不加水印);
9Wy.E.mC&BJ5k
使用说明:
,u1xhi*B
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
"tdg]W.eF2F
2. 将extension_dir =改为你的php_gd2.dll所在目录;
P6OD|e
****************************************************/
0J;@!cH)N3]h'p3l
//上传文件类型列表 P%P&B$`%NYI#f
$uptypes=array(
k3`^%Z
Tw,D6j
'image/jpg', 4l"b'^[w
'image/jpeg', 6},a1{$D![Z/w?6G6R
'image/png', RdVe%U*e)t9g9pP8R
'image/pjpeg',
)K Kg.G-r;}5b)i
'image/gif',
Qda)P,l
'image/bmp', FHh vQA${E
'image/x-png' k|8j:q9j5uS.V!Z
);
&f"w4iO&ON9f:w(n
$max_file_size=2000000; //上传文件大小限制, 单位BYTE 7x#Eb\M |
$destination_folder="uploadimg/"; //上传文件路径 0dSmeq%I8{WR[
$watermark=1; //是否附加水印(1为加水印,其他为不加水印);
!i
D.X%G"v4e,^#Dyy(K
$watertype=1; //水印类型(1为文字,2为图片) N7`)xi9p,H8KN
$waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
` B0Pd6V
$waterstring="http://www.xplore.cn/"; //水印字符串 zH:K.N p w
$waterimg="xplore.gif"; //水印图片
I6jL){/Cn]Y
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成); +qPZh;fX
$imgpreviewsize=1/2; //缩略图比例 )v]&~[L!E3S:rcI
?> Y2|G^h)bB#l+?
<html>
1n)BL
vK wau
<head> "l`Eh6P/PzK
<title>ZwelL图片上传程序</title> sFKS4u6N.g!`$]
<style type="text/css">
-e^+nW5viSn7o
<!--
Ix8op6LJ&C&}
body F6E-@ lQfzd4Z
{ +Q!|^A!L#wmU'G
font-size: 9pt; wqL8WQ,n2p
}
(a|%u(L$K
input
4PR2xO?a~(`5d
{
gG"mTP'P~/B!JQ
background-color: #66CCFF; \1`vG8X.P4b~DX!aNI
border: 1px inset #CCCCCC;
h y'tD&{.\
} @C'o5e:iR U
-->
1}g}Z3\|"X+bN
</style>
*z&d,Wox5f
</head>
L.l:m$TB4W8LJr;o
<body>
9H4l@2lCUs3x FH0~
<form enctype="multipart/form-data" method="post" name="upform">
0r/K0fe-Sm!f)\
上传文件: 4?$Z3e*H&S
<input name="upfile" type="file">
k;NX/r;m
<input type="submit" value="上传">
coTg(YD
dv
Z#~t ~g
允许上传的文件类型为:<?=implode(', ',$uptypes)?>
Z.p;F'u
w-K#q
</form>
|1T/BqUTq
<?php t)g7c&mM5EN)g
if ($_SERVER['REQUEST_METHOD'] == 'POST') grPT_%[
{ /xe;k
XY:MNrJ/V
if (!is_uploaded_file($_FILES["upfile"][tmp_name])) Wo V8D&m@Q P
f4P
//是否存在文件 h;xc+OEKy^l c
{ L1Q\;}Ib
B
echo "图片不存在!"; PK(Z;^#Ct Uw
vvL'd
exit;
HQ/E_:pnA
} I.h6?c2x T\ F-k`
$file = $_FILES["upfile"]; [!]zWl(q#_:p G
if($max_file_size < $file["size"]) ?
x0J
V6BN(X
//检查文件大小
v&l4RS:}8F(DE
{
Tj.X.L&q2~
echo "文件太大!"; %I/ftYC/}
exit; OWoW
M x
}
WY"mhl%V
}.Ma:x
if(!in_array($file["type"], $uptypes))
f*G^ N(L"x
//检查文件类型 .WJXcD
dq w
{
k)d6J0x
rd)~%zqP
echo "文件类型不符!".$file["type"];
@,O5P'q6{N
exit;
Bv xz(|/VZU
} (`x3A:tW:?
if(!file_exists($destination_folder)) 1R9j
~9| ^
m
{
9^u2beH!x4V
mkdir($destination_folder); w2Erq0v,d9{
Cb d
} :L(S.A4fXb6Q9|i
$filename=$file["tmp_name"]; ,o6P:T`_]@}fEY4_
$image_size = getimagesize($filename); { G'h5\(`R
$pinfo=pathinfo($file["name"]);
!`6A.u)I*U
$ftype=$pinfo['extension']; 6WD&~uq!OU
$destination = $destination_folder.time().".".$ftype;
(bC9B3e[
if (file_exists($destination) && $overwrite != true)
-P%]!z9b$wv0w}
{
3n{8o p W*D+K\w0y+\
echo "同名文件已经存在了";
XYqY;^I {Rc
exit; Y-F
^Vi S
h
} |&VB#l/[
if(!move_uploaded_file ($filename, $destination)) )nM"M#D-IE4Ep!j/S
{ ^6sw7u;^([
echo "移动文件出错";
*APF XJ7u)[A
exit;
A.kOU t0]_
} 3Y#G)a;Gt
$pinfo=pathinfo($destination);
Kx&e6I1MPw[
$fname=$pinfo[basename];
G
xbW'g\0W*P0E!Wd/V
echo " <font color=red>已经成功上传</font>GnAK5?5D/^ux
y
文件名: <font color=blue>".$destination_folder.$fname."</font>
)U4_T5s*R7V
V(W
"; .W;VLn'?
echo " 宽度:".$image_size[0];
0l0zk8@?lOvE
echo " 长度:".$image_size[1]; Tp z#W6zUPl7x4t
echo "
R LT|j+d"~5r
大小:".$file["size"]." bytes";
4E4O
McQ
if($watermark==1)
M1C,k'g_Q;C*W-l/~
x-~
{
h'X0? PHFq
$iinfo=getimagesize($destination,$iinfo); J8vx!b2`-c
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
K2M4ZA8u9CV]1}
$white=imagecolorallocate($nimage,255,255,255); .oi{o:~3R`
$black=imagecolorallocate($nimage,0,0,0);
ia@WxR]$S#V
$red=imagecolorallocate($nimage,255,0,0); Su+@|1m!c+z7B*p[(@
imagefill($nimage,0,0,$white);
R6y$Fm3_ B_
switch ($iinfo[2]) K,Q"};rsG
{
Q#_Wfejqx
case 1:
aK8l!C~_
$simage =imagecreatefromgif($destination); 7HGtLmx
break;
DhW#Yg#pDQ l
case 2: LoV \"ggl|
$simage =imagecreatefromjpeg($destination);
0u} e`dop%zW
break;
tG0X5R2nvJQkO
case 3:
j_|bw A
$simage =imagecreatefrompng($destination); )L9D:X
K
c.\'r7M
break;
,?:k_.lID
t&gDPKA
case 6: 2G5p2G3AD{*n
$simage =imagecreatefromwbmp($destination);
r)V'pfQWm
W)g
break;
(|zYB ?xn.x
default: