function saveremotefile($url, $water, $category)if(!@$fp = fopen($attach['target'], 'wb')) {
return $blank;
} else {
flock($fp, 2);
fwrite($fp, $content);
fclose($fp);
}
$attach['size'] = filesize($attach['target']);if($attach['isimage']) {
require_once libfile('class/image');
$imginfo=getimagesize($attach['target']); 
 $attach['width']=$imginfo[0];
$image = new Image($attach['target']); 
$image->Water(); //这边没有效果是discuz的论坛
图片可以上传成功,就是没有水印效果要怎么加呢?

解决方案 »

  1.   

    给你个现成的!function setWater($imgSrc,$Img,$Text,$TextColor,$Pos,$fontType,$Type)
    {    $srcInfo = @getimagesize($imgSrc);
        $srcImg_w    = $srcInfo[0];
        $srcImg_h    = $srcInfo[1];
           
        switch ($srcInfo[2])
        {
            case 1:
                $srcim =imagecreatefromgif($imgSrc);
                break;
            case 2:
                $srcim =imagecreatefromjpeg($imgSrc);
                break;
            case 3:
                $srcim =imagecreatefrompng($imgSrc);
                break;
            default:
                die("不支持的图片文件类型");
                exit;
        }
           
        if(!strcmp($Type,"img"))
        {
            if(!file_exists($Img) || empty($Img))
            {
                return;
            }
               
            $ImgInfo = @getimagesize($Img);
            $Img_w    = $ImgInfo[0];
            $Img_h    = $ImgInfo[1];
               
            if($srcImg_w < $Img_w || $srcImg_h < $Img_h)
            {
                return;
            }
               
            switch ($ImgInfo[2])
            {
                case 1:
                    $im =imagecreatefromgif($Img);
                    break;
                case 2:
                    $im =imagecreatefromjpeg($Img);
                    break;
                case 3:
                    $im =imagecreatefrompng($Img);
                    break;
                default:
                    die("不支持的水印图片文件类型");
                    exit;
            }
               
            $logow = $Img_w;
            $logoh = $Img_h;
        }
           
        if(!strcmp($Type,"text"))
        {
            $fontSize = 16;
            if(!empty($Text))
            {
                if(!file_exists($fontType))
                {
                    return;
                }
            }
            else {
                return;
            }
               
            $box = @imagettfbbox($fontSize, 0, $fontType,$Text);
            $logow = max($box[2], $box[4]) - min($box[0], $box[6]);
            $logoh = max($box[1], $box[3]) - min($box[5], $box[7]);
        }
           
        if($Pos == 0)
        {
            $Pos = rand(1, 9);
        }
           
        switch($Pos)
        {
            case 1:
                $x = +5;
                $y = +5;
                break;
            case 2:
                $x = ($srcImg_w - $logow) / 2;
                $y = +5;
                break;
            case 3:
                $x = $srcImg_w - $logow - 5;
                $y = +15;
                break;
            case 4:
                $x = +5;
                $y = ($srcImg_h - $logoh) / 2;
                break;
            case 5:
                $x = ($srcImg_w - $logow) / 2;
                $y = ($srcImg_h - $logoh) / 2;
                break;
            case 6:
                $x = $srcImg_w - $logow - 5;
                $y = ($srcImg_h - $logoh) / 2;
                break;
            case 7:
                $x = +5;
                $y = $srcImg_h - $logoh - 5;
                break;
            case 8:
                $x = ($srcImg_w - $logow) / 2;
                $y = $srcImg_h - $logoh - 5;
                break;
            case 9:
                $x = $srcImg_w - $logow - 5;
                $y = $srcImg_h - $logoh -5;
                break;
            default:
                die("此位置不支持");
                exit;
        }
           
        $dst_img = @imagecreatetruecolor($srcImg_w, $srcImg_h);
           
        imagecopy ( $dst_img, $srcim, 0, 0, 0, 0, $srcImg_w, $srcImg_h);
           
        if(!strcmp($Type,"img"))
        {
            imagecopy($dst_img, $im, $x, $y, 0, 0, $logow, $logoh);
            imagedestroy($im);
        }
           
        if(!strcmp($Type,"text"))
        {
            $rgb = explode(',', $TextColor);
               
            $color = imagecolorallocate($dst_img, $rgb[0], $rgb[1], $rgb[2]);
            imagettftext($dst_img, $fontSize, 0, $x, $y, $color, $fontType,$Text);
        }
           
        switch ($srcInfo[2])
        {
            case 1:
                imagegif($dst_img, $imgSrc);
                break;
            case 2:
                imagejpeg($dst_img, $imgSrc);
                break;
            case 3:
                imagepng($dst_img, $imgSrc);
                break;
            default:
                die("不支持的水印图片文件类型");
                exit;
        }
           
        imagedestroy($dst_img);
        imagedestroy($srcim);
    }
      

  2.   

    添加文字水印:
    function imageWaterMark($groundImage,$waterPos=9,$waterImage="",$waterText="",$textFont=1,$textColor="#FF0000") 

      $isWaterImage = FALSE; 
      $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";   //读取水印文件 
      if(!empty($waterImage) && file_exists($waterImage)) 
      { 
        $isWaterImage = TRUE; 
        $water_info = getimagesize($waterImage); 
        $water_w   = $water_info[0];//取得水印图片的宽 
        $water_h   = $water_info[1];//取得水印图片的高     switch($water_info[2])//取得水印图片的格式 
        { 
            case 1:$water_im = imagecreatefromgif($waterImage);break; 
            case 2:$water_im = imagecreatefromjpeg($waterImage);break; 
            case 3:$water_im = imagecreatefrompng($waterImage);break; 
            default:die($formatMsg); 
        } 
      }   //读取背景图片 
      if(!empty($groundImage) && file_exists($groundImage)) 
      { 
        $ground_info = getimagesize($groundImage); 
        $ground_w   = $ground_info[0];//取得背景图片的宽 
        $ground_h   = $ground_info[1];//取得背景图片的高     switch($ground_info[2])//取得背景图片的格式 
        { 
            case 1:$ground_im = imagecreatefromgif($groundImage);break; 
            case 2:$ground_im = imagecreatefromjpeg($groundImage);break; 
            case 3:$ground_im = imagecreatefrompng($groundImage);break; 
            default:die($formatMsg); 
        } 
      } 
      else 
      { 
        die("需要加水印的图片不存在!"); 
      }   //水印位置 
      if($isWaterImage)//图片水印 
      { 
        $w = $water_w; 
        $h = $water_h; 
        $label = "图片的"; 
      }
      else//文字水印 
      { 
        $temp = imagettfbbox(ceil($textFont*3),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围 
        $w = $temp[2] - $temp[6]; 
        $h = $temp[3] - $temp[7]; 
        unset($temp); 
        $label = "文字区域"; 
      } 
      //判断图片大小与水印大小
      //if( ($ground_w<$w) || ($ground_h<$h) ) 
     // { 
      //  echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!"; 
      //  return; 
     // }
      switch($waterPos) 
      { 
        case 0://随机 
            $posX = rand(0,($ground_w - $w)); 
            $posY = rand(0,($ground_h - $h)); 
            break; 
        case 1://1为顶端居左 
            $posX = 0; 
            $posY = 0; 
            break; 
        case 2://2为顶端居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = 0; 
            break; 
        case 3://3为顶端居右 
            $posX = $ground_w - $w; 
            $posY = 0; 
            break; 
        case 4://4为中部居左 
            $posX = 0; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 5://5为中部居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 6://6为中部居右 
            $posX = $ground_w - $w; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 7://7为底端居左 
            $posX = 0; 
            $posY = $ground_h - $h; 
            break; 
        case 8://8为底端居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = $ground_h - $h; 
            break; 
        case 9://9为底端居右 
            $posX = $ground_w - $w; 
            $posY = $ground_h - $h; 
            break; 
        default://随机 
            $posX = rand(0,($ground_w - $w)); 
            $posY = rand(0,($ground_h - $h)); 
            break;   
      }   //设定图像的混色模式 
      imagealphablending($ground_im, true);   if($isWaterImage)//图片水印 
      { 
        imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件       
      } 
      else//文字水印 
      { 
        if( !empty($textColor) && (strlen($textColor)==7) ) 
        { 
            $R = hexdec(substr($textColor,1,2)); 
            $G = hexdec(substr($textColor,3,2)); 
            $B = hexdec(substr($textColor,5)); 
        } 
        else 
        { 
            die("水印文字颜色格式不正确!"); 
        } 
        imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));       
      }   //生成水印后的图片 
      @unlink($groundImage); 
      switch($ground_info[2])//取得背景图片的格式 
      { 
        case 1:imagegif($ground_im,$groundImage);break; 
        case 2:imagejpeg($ground_im,$groundImage);break; 
        case 3:imagepng($ground_im,$groundImage);break; 
        default:die($errorMsg); 
      }   //释放内存 
      if(isset($water_info)) unset($water_info); 
      if(isset($water_im)) imagedestroy($water_im); 
      unset($ground_info); 
      imagedestroy($ground_im); 

    //--------------------------------------------------------------------------------------- if(isset($_FILES) && !empty($_FILES['userfile']) && $_FILES['userfile']['size']>0) 

      //上传图片
    $oldName = $_FILES['userfile']['name']; //form表单中的上传图片的name值(pics)
    $tmp = explode(".",$oldName);
    $newName = time()."_Esther.".$tmp[1];
    $uploadfile = "uploadimg/".$newName; //图片存放的路径
    if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
    move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile); 
        //文字水印 
        imageWaterMark($uploadfile,7,"","http://www.sdstudy.com",7,"#FFFFFF");     //图片水印 
        // $waterImage="1.gif";//水印图片路径 
        //imageWaterMark($uploadfile,0,$waterImage);     echo "<img src=\"".$uploadfile."\" border=\"0\">"; 
      } 
      else 
      { 
        echo "Fail<br>"; 
      } 
    } 使用方法:require_once('include/fontwater.php');
    <form enctype="multipart/form-data" method="POST"> 
    文件: <input name="userfile" type="file"> 
    <input type="submit" value="上传"> 
    </form>
      

  3.   

    添加图片水印:
    function imageWaterMark($groundImage,$waterPos=9,$waterImage="",$waterText="",$textFont=1,$textColor="#FF0000") 

      $isWaterImage = FALSE; 
      $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";   //读取水印文件 
      if(!empty($waterImage) && file_exists($waterImage)) 
      { 
        $isWaterImage = TRUE; 
        $water_info = getimagesize($waterImage); 
        $water_w   = $water_info[0];//取得水印图片的宽 
        $water_h   = $water_info[1];//取得水印图片的高     switch($water_info[2])//取得水印图片的格式 
        { 
            case 1:$water_im = imagecreatefromgif($waterImage);break; 
            case 2:$water_im = imagecreatefromjpeg($waterImage);break; 
            case 3:$water_im = imagecreatefrompng($waterImage);break; 
            default:die($formatMsg); 
        } 
      }   //读取背景图片 
      if(!empty($groundImage) && file_exists($groundImage)) 
      { 
        $ground_info = getimagesize($groundImage); 
        $ground_w   = $ground_info[0];//取得背景图片的宽 
        $ground_h   = $ground_info[1];//取得背景图片的高     switch($ground_info[2])//取得背景图片的格式 
        { 
            case 1:$ground_im = imagecreatefromgif($groundImage);break; 
            case 2:$ground_im = imagecreatefromjpeg($groundImage);break; 
            case 3:$ground_im = imagecreatefrompng($groundImage);break; 
            default:die($formatMsg); 
        } 
      } 
      else 
      { 
        die("需要加水印的图片不存在!"); 
      }  //水印位置 
      if($isWaterImage)//图片水印 
      { 
        $w = $water_w; 
        $h = $water_h; 
        $label = "图片的"; 
      }
      else//文字水印 
      { 
        $temp = imagettfbbox(ceil($textFont*3),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围 
        $w = $temp[2] - $temp[6]; 
        $h = $temp[3] - $temp[7]; 
        unset($temp); 
        $label = "文字区域"; 
      } 
      //判断图片大小与水印大小
      //if( ($ground_w<$w) || ($ground_h<$h) ) 
     // { 
      //  echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!"; 
      //  return; 
     // }
      switch($waterPos) 
      { 
        case 0://随机 
            $posX = rand(0,($ground_w - $w)); 
            $posY = rand(0,($ground_h - $h)); 
            break; 
        case 1://1为顶端居左 
            $posX = 0; 
            $posY = 0; 
            break; 
        case 2://2为顶端居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = 0; 
            break; 
        case 3://3为顶端居右 
            $posX = $ground_w - $w; 
            $posY = 0; 
            break; 
        case 4://4为中部居左 
            $posX = 0; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 5://5为中部居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 6://6为中部居右 
            $posX = $ground_w - $w; 
            $posY = ($ground_h - $h) / 2; 
            break; 
        case 7://7为底端居左 
            $posX = 0; 
            $posY = $ground_h - $h; 
            break; 
        case 8://8为底端居中 
            $posX = ($ground_w - $w) / 2; 
            $posY = $ground_h - $h; 
            break; 
        case 9://9为底端居右 
            $posX = $ground_w - $w; 
            $posY = $ground_h - $h; 
            break; 
        default://随机 
            $posX = rand(0,($ground_w - $w)); 
            $posY = rand(0,($ground_h - $h)); 
            break;   
      }   //设定图像的混色模式 
      imagealphablending($ground_im, true);   if($isWaterImage)//图片水印 
      { 
        imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件       
      } 
      else//文字水印 
      { 
        if( !empty($textColor) && (strlen($textColor)==7) ) 
        { 
            $R = hexdec(substr($textColor,1,2)); 
            $G = hexdec(substr($textColor,3,2)); 
            $B = hexdec(substr($textColor,5)); 
        } 
        else 
        { 
            die("水印文字颜色格式不正确!"); 
        } 
        imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));       
      }   //生成水印后的图片 
      @unlink($groundImage); 
      switch($ground_info[2])//取得背景图片的格式 
      { 
        case 1:imagegif($ground_im,$groundImage);break; 
        case 2:imagejpeg($ground_im,$groundImage);break; 
        case 3:imagepng($ground_im,$groundImage);break; 
        default:die($errorMsg); 
      }   //释放内存 
      if(isset($water_info)) unset($water_info); 
      if(isset($water_im)) imagedestroy($water_im); 
      unset($ground_info); 
      imagedestroy($ground_im); 

    //--------------------------------------------------------------------------------------- if(isset($_FILES) && !empty($_FILES['userfile']) && $_FILES['userfile']['size']>0) 

      //上传图片
    $oldName = $_FILES['userfile']['name']; //form表单中的上传图片的name值(pics)
    $tmp = explode(".",$oldName);
    $newName = time()."_Esther.".$tmp[1];
    $uploadfile = "uploadimg/".$newName; //图片存放的路径
    if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
    move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile); 
        //图片水印 
         $waterImage="images/water.gif";//水印图片路径 
        imageWaterMark($uploadfile,9,$waterImage);     echo "<img src=\"".$uploadfile."\" border=\"0\">"; 

      else 
      { 
        echo "Fail<br>"; 
      } 

    使用方法:
    <?php
    require_once('include/imgwater.php');?>
    <form enctype="multipart/form-data" method="POST"> 
    文件: <input name="userfile" type="file"> 
    <input type="submit" value="上传"> 
    </form>
      

  4.   

    PHP上传图片加水印(文字水印+图片水印)
    下载地址:http://download.csdn.net/source/2936468