工程家园's Archiver

skybird 发表于 2005-2-15 17:46

上传图片实现水印代码[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]

狮子宝宝 发表于 2005-3-21 12:56

明显的危机代码

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.