好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php图片上传加水印,自动增加水印

这是一款完美的php文件上传代码,图片上传成功后并自动给图片增加上水印,这样很好的快速的提高的了要手工一张张增加水印效果,代码如下:

function  upload( $uploadfile , $watermark =1, $watertype =1, $content ){     foreach ( $uploadfile [ 'name' ]  as   $key => $name ) {   //多文件上传函数      uploadall( $uploadfile , $key , $watermark , $watertype , $content );    }   }    function  uploadall( $uploadfile , $i , $watermark , $watertype , $content ) {     $watermark = $watermark ;          //是否附加水印(1为加水印,其他为不加水印);       $watertype = $watertype ;          //水印类型(1为文字,2为图片)       $watercontent = $content ;          //水印的内容      if ( empty empty ( $uploadfile [ 'name' ][ $i ])) {      die ( "未选择文件上传" );    }     if ( $uploadfile [ 'error' ][ $i ] == 2) {    //验证html判断结果       die ( "上传的文件太大了" );    }     $allow_filemaxsize  = 2048000;     // 2m      $filesize  =  $uploadfile [ 'size' ][ $i ];     if ( $filesize  >  $allow_filemaxsize ) {      die ( "上传的文件太大了" );    }     $allow_filetypes  =  array ( "jpeg" ,  "gif" ,  "png" , "jpg" , "pjpeg" ); //允许上传的文件统一资源类型 mimetype      $allow  = false;         //默认都不允许      $mimetype  =  $uploadfile [ 'type' ][ $i ];   //上传文件的mime文件类型      foreach ( $allow_filetypes   as   $t ) {      if ( strpos ( $mimetype ,  $t ) !== false) {       $allow  = true;       //找到了符合上传条件的文件类型        break ;     }    }     if ( $allow  == false) {      die ( "上传的文件类型不被允许" );    }     $result  =  is_uploaded_file ( $uploadfile [ 'tmp_name' ][ $i ]);    //判断是否为上传动作产生的      if (! $result ) {      die ( "上传的文件有误" );    }     $uploaddir  =  "img/" ;        //上传文件保存目录      if (! file_exists ( $uploaddir ))  mkdir ( $uploaddir , 0777, true); //若上传保存目录不存在,则递归创建      /**重命名文件**/      $filetype  =  explode ( "." ,  $uploadfile [ 'name' ][ $i ]);     $filetype  =  array_pop ( $filetype );     $uploadfilename  = time(). "." . $filetype ;     $_session [ 'filename' ] =  $uploadfilename ;     //end      $result  = move_uploaded_file( $uploadfile [ 'tmp_name' ][ $i ],  $uploaddir . $uploadfilename );     if ( $result ) {      echo    "文件上传成功" ;    } else {      switch ( $uploadfile [ 'error' ][ $i ]) {       case  1: return   "上传的文件超出了php.ini中设定的最大值" ; break ;       case  2: return   "上传的文件超出了html中设定的最大值" ; break ;       case  3: return   "文件只有部分被上传" ; break ;        case  4; return   "没有文件被上传" ; break ;        default : die ( "文件上传失败" );       }    }     if ( $watermark ==1) {       $iinfo = getimagesize ( $uploaddir . $uploadfilename );   //获取图片的相关信息,得到数组       $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( $uploaddir . $uploadfilename );        break ;        case  2:        $simage  =imagecreatefromjpeg( $uploaddir . $uploadfilename );        break ;        case  3:        $simage  =imagecreatefrompng( $uploaddir . $uploadfilename );        break ;        case  6:        $simage  =imagecreatefromwbmp( $uploaddir . $uploadfilename );        break ;        default :        die ( "不支持的文件类型" );        exit ;      }      imagecopy( $nimage , $simage ,0,0,0,0, $iinfo [ '0' ], $iinfo [ '1' ]);       switch ( $watertype ) {        case  1:              //加水印字符串        imagestring( $nimage ,5, $iinfo [ '0' ]/2-50, $iinfo [ '1' ]-30, $watercontent , $black );        break ;        case  2:             //加水印图片         $simage1  =imagecreatefromgif( $watercontent );        $size  =  getimagesize ( $watercontent );      imagecopy( $nimage , $simage1 , $iinfo [ '0' ]/2+50, $iinfo [ '1' ]-100,0,0, $size [0], $size [1]);       imagedestroy( $simage1 );        break ;      }        switch  ( $iinfo [2]) {        case  1:       imagejpeg( $nimage ,  $uploaddir . $uploadfilename );  //将图像$nimage以$destination文件名创建一个jpeg的格式文件        break ;        case  2:       imagejpeg( $nimage ,  $uploaddir . $uploadfilename );        break ;        case  3:       imagepng( $nimage ,  $uploaddir . $uploadfilename );        break ;        case  6:       imagewbmp( $nimage ,  $uploaddir . $uploadfilename );        break ;      }      imagedestroy( $nimage );     //覆盖原上传文件       imagedestroy( $simage );     }  //开源代码phpfensi.com   }  if (@ $_get [ 'act' ] ==  "insert" ) {     //未作参数校验         //该函数的四个参数分别是:上传控件的name值;是否加水印(1为加,其他数字为不佳);         //水印的类型(1为字符串,2为图片);水印的内容,字符串时写数据,图片时写图片的地址;     $picture  = upload( $_files [ 'picture' ],1,2, "img/watermark.gif" ); //上传文件,并返回上传后的文件路径名     } 

上传代码如下:

< form   method = "post"   action = ""   enctype = "multipart/form-data" >     < table   border = "1"   cellpadding = "5"   cellspacing = "0" >      < tr >       < td > 产品图片: </ td >       < td > < input   type = "hidden"   name = "max_file_size"   value = "1024000" >        < input   type = "file"   name = "picture[]" >       </ td >      </ tr >      < tr >       < td   colspan = "2"   align = "center" > < input   type = "submit"   value = "提交" > </ td >      </ tr >     </ table >   </ form >  

查看更多关于php图片上传加水印,自动增加水印的详细内容...

  阅读:61次