上传图片实现水印代码[php]
必需要求!GD库为打开,且GD在2.0.1或以上[quote]
<?
// config.php
$phototype = 'jpg,gif,png,bmp';
$image_w = '0';
$image_h = '0';
$watermark = '1';
$watertype = '1';
//$waterposition = 1;
$waterstring = 'http://www.wan-e.net';
$waterimg = 'images/water.gif';
$water_width = '197';
$water_height = '35';
//function.php
function upload_img($name,$tmp_name,$addr)
{
global $phototype,$watermark,$watertype,$waterposition,$waterstring,$waterimg,$water_width,$water_height,$image_w,$image_h; // water photo
if (is_uploaded_file($tmp_name))
{
$phototypearray=explode(',',$phototype);
@$size=getimagesize($tmp_name);
if ($image_w!='0' && $size[0]>$image_w) {echo clickback('图片宽度过大,超过限额'.$image_w);exit;}
if ($image_h!='0' && $size[1]>$image_h) {echo clickback('图片高度过大,超过限额'.$image_h);exit;}
$cut=substr($name,-3,3);
if (!in_array($cut,$phototypearray)) {echo clickback('上传图片格式: '.$phototype);exit;} else {$up=$cut;}
$upfile=$addr."/".date("YmdHis",time())."_".rand('10','99').".".$up;
if (file_exists($upfile)) {echo clickback('图片已存在');exit;}
$query=move_uploaded_file($tmp_name, $upfile);
if($watermark==1)
{
$iinfo=getimagesize($upfile,$iinfo);
$nimage=imagecreatetruecolor($iinfo[0],$iinfo[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
case 1:$simage =imagecreatefromgif($upfile);break;
case 2:$simage =imagecreatefromjpeg($upfile);break;
case 3:$simage =imagecreatefrompng($upfile);break;
case 6:$simage =imagecreatefromwbmp($upfile);break;
default:die("不支持的文件类型");exit;
}
imagecopy($nimage,$simage,0,0,0,0,$iinfo[0],$iinfo[1]);
//imagefilledrectangle($nimage,1,$iinfo[1]-15,80,$iinfo[1],$white);
switch($watertype)
{
case 0:
@imagestring($nimage,5,($iinfo[0]-($water_width+5)),10,$waterstring,$white);
break;
case 1:
@$simage1 =imagecreatefromgif($waterimg);
@imagecopy($nimage,$simage1,($iinfo[0]-($water_width+5)),10,0,0,$water_width,$water_height);
@imagedestroy($simage1);
break;
}
switch ($iinfo[2])
{
case 1:
imagejpeg($nimage, $upfile);
break;
case 2:
imagejpeg($nimage, $upfile);
break;
case 3:
imagepng($nimage, $upfile);
break;
case 6:
imagewbmp($nimage, $upfile);
break;
}
imagedestroy($nimage);
imagedestroy($simage);
}
if ($query)
{
return $upfile;
}
else
{
return 'faile';
}
}
else
{
echo clickback("无法上传文件");
}
}
?><?
// config.php
$phototype = 'jpg,gif,png,bmp';
$image_w = '0';
$image_h = '0';
$watermark = '1';
$watertype = '1';
//$waterposition = 1;
$waterstring = 'http://www.wan-e.net';
$waterimg = 'images/water.gif';
$water_width = '197';
$water_height = '35';
//function.php
function upload_img($name,$tmp_name,$addr)
{
global $phototype,$watermark,$watertype,$waterposition,$waterstring,$waterimg,$water_width,$water_height,$image_w,$image_h; // water photo
if (is_uploaded_file($tmp_name))
{
$phototypearray=explode(',',$phototype);
@$size=getimagesize($tmp_name);
if ($image_w!='0' && $size[0]>$image_w) {echo clickback('图片宽度过大,超过限额'.$image_w);exit;}
if ($image_h!='0' && $size[1]>$image_h) {echo clickback('图片高度过大,超过限额'.$image_h);exit;}
$cut=substr($name,-3,3);
if (!in_array($cut,$phototypearray)) {echo clickback('上传图片格式: '.$phototype);exit;} else {$up=$cut;}
$upfile=$addr."/".date("YmdHis",time())."_".rand('10','99').".".$up;
if (file_exists($upfile)) {echo clickback('图片已存在');exit;}
$query=move_uploaded_file($tmp_name, $upfile);
if($watermark==1)
{
$iinfo=getimagesize($upfile,$iinfo);
$nimage=imagecreatetruecolor($iinfo[0],$iinfo[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
case 1:$simage =imagecreatefromgif($upfile);break;
case 2:$simage =imagecreatefromjpeg($upfile);break;
case 3:$simage =imagecreatefrompng($upfile);break;
case 6:$simage =imagecreatefromwbmp($upfile);break;
default:die("不支持的文件类型");exit;
}
imagecopy($nimage,$simage,0,0,0,0,$iinfo[0],$iinfo[1]);
//imagefilledrectangle($nimage,1,$iinfo[1]-15,80,$iinfo[1],$white);
switch($watertype)
{
case 0:
@imagestring($nimage,5,($iinfo[0]-($water_width+5)),10,$waterstring,$white);
break;
case 1:
@$simage1 =imagecreatefromgif($waterimg);
@imagecopy($nimage,$simage1,($iinfo[0]-($water_width+5)),10,0,0,$water_width,$water_height);
@imagedestroy($simage1);
break;
}
switch ($iinfo[2])
{
case 1:
imagejpeg($nimage, $upfile);
break;
case 2:
imagejpeg($nimage, $upfile);
break;
case 3:
imagepng($nimage, $upfile);
break;
case 6:
imagewbmp($nimage, $upfile);
break;
}
imagedestroy($nimage);
imagedestroy($simage);
}
if ($query)
{
return $upfile;
}
else
{
return 'faile';
}
}
else
{
echo clickback("无法上传文件");
}
}
?>
[/quote] 明显的危机代码
页:
[1]