为百度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编辑器有所帮助。