为百度UE编辑器上传图片添加水印功能
UEditor编辑器上传图片是自动提取的,但是图片没有水印功能,下面小编和各位一起来看看。
UEditor编辑器没有上传图片加水印的功能,需要进行二次开发,本例是在PHPCMS系统中对百度编辑器进行二次开发,添加上传图片加水印功能。
首先打开UEditor编辑器文件目录的php文件夹,打开Uploader.class.php,把PHPCMS添加水印的方法复制过来,加到这个类所有成员方法最后面,然后进行修改如下:
//图片加水印 publicfunctionwatermark($source,$target='',$w_pos='',$w_img='',$w_text='99danji',$w_font=8,$w_color='#ff0000'){ $this->w_img='watermark.png'; $this->w_pos=9; $this->w_minwidth=400; $this->w_minheight=200; $this->w_quality=80; $this->w_pct=85; $w_pos=$w_pos?$w_pos:$this->w_pos; $w_img=$w_img?$w_img:$this->w_img; //if(!$this->watermark_enable||!$this->check($source))returnfalse; if(!$target)$target=$source; //$w_img=PHPCMS_PATH.$w_img; //define('WWW_PATH',dirname(dirname(dirname(__FILE__))); $w_img='../../../images/water/'.$w_img; $source_info=getimagesize($source); $source_w=$source_info[0]; $source_h=$source_info[1]; //if($source_w<$this->w_minwidth||$source_h<$this->w_minheight)returnfalse; switch($source_info[2]){ case1: $source_img=imagecreatefromgif($source); break; case2: $source_img=imagecreatefromjpeg($source); break; case3: $source_img=imagecreatefrompng($source); break; default: returnfalse; } if(!empty($w_img)&&file_exists($w_img)){ $ifwaterimage=1; $water_info=getimagesize($w_img); $width=$water_info[0]; $height=$water_info[1]; switch($water_info[2]){ case1: $water_img=imagecreatefromgif($w_img); break; case2: $water_img=imagecreatefromjpeg($w_img); break; case3: $water_img=imagecreatefrompng($w_img); break; default: return; } }else{ $ifwaterimage=0; $temp=imagettfbbox(ceil($w_font*2.5),0,PC_PATH.'libs/data/font/elephant.ttf',$w_text); $width=$temp[2]-$temp[6]; $height=$temp[3]-$temp[7]; unset($temp); } switch($w_pos){ case1: $wx=5; $wy=5; break; case2: $wx=($source_w-$width)/2; $wy=0; break; case3: $wx=$source_w-$width; $wy=0; break; case4: $wx=0; $wy=($source_h-$height)/2; break; case5: $wx=($source_w-$width)/2; $wy=($source_h-$height)/2; break; case6: $wx=$source_w-$width; $wy=($source_h-$height)/2; break; case7: $wx=0; $wy=$source_h-$height; break; case8: $wx=($source_w-$width)/2; $wy=$source_h-$height; break; case9: $wx=$source_w-$width; $wy=$source_h-$height; break; case10: $wx=rand(0,($source_w-$width)); $wy=rand(0,($source_h-$height)); break; default: $wx=rand(0,($source_w-$width)); $wy=rand(0,($source_h-$height)); break; } if($ifwaterimage){ if($water_info[2]==3){ imagecopy($source_img,$water_img,$wx,$wy,0,0,$width,$height); }else{ imagecopymerge($source_img,$water_img,$wx,$wy,0,0,$width,$height,$this->w_pct); } }else{ if(!empty($w_color)&&(strlen($w_color)==7)){ $r=hexdec(substr($w_color,1,2)); $g=hexdec(substr($w_color,3,2)); $b=hexdec(substr($w_color,5)); }else{ return; } imagestring($source_img,$w_font,$wx,$wy,$w_text,imagecolorallocate($source_img,$r,$g,$b)); } switch($source_info[2]){ case1: imagegif($source_img,$target); break; case2: imagejpeg($source_img,$target,$this->w_quality); break; case3: imagepng($source_img,$target); break; default: return; } if(isset($water_info)){ unset($water_info); } if(isset($water_img)){ imagedestroy($water_img); } unset($source_info); imagedestroy($source_img); returntrue; } publicfunctioncheck($image){ returnextension_loaded('gd')&&preg_match("/\.(jpg|jpeg|gif|png)/i",$image,$m)&&file_exists($image)&&function_exists('imagecreatefrom'.($m[1]=='jpg'?'jpeg':$m[1])); }
对比我修改的部分,由于phpcms水印可以在后台管理设置,phpcms自带的水印方法通过读取配置文件获取路径,和读取数据库设置获取参数设置,那么这些地方需要手动进行设置。
对了,在upFile方法还要添加一段函数:
if($this->watermark){ $this->watermark($this->filePath,$this->filePath); }
然后打开UEditor百度编辑器php目录下的action_upload.php文件,加上是否添加水印的参数:
/*上传配置*/ $base64="upload"; switch(htmlspecialchars($_GET['action'])){ case'uploadimage': $config=array( "pathFormat"=>$CONFIG['imagePathFormat'], "maxSize"=>$CONFIG['imageMaxSize'], "allowFiles"=>$CONFIG['imageAllowFiles'] ); $fieldName=$CONFIG['imageFieldName']; $watermark=true; break;
然后在后面还有一句要改成:
/*生成上传实例对象并完成上传*/ $up=newUploader($fieldName,$config,$base64,$watermark);
这样就大功告成了,本文主要是提供思路和参考。
以上所述就是本文的全部内容了,希望大家能够喜欢,能够对大家使用ue编辑器有所帮助。