前些日子把phpcms的内置编辑器改成了百度UE编辑器,非常好用,但是有个地方不是很满意,就是没法给上传的图片加水印了,经过一番研究终于实现了出来,分享给大家

UEditor编辑器上传图片是自动提取的,但是图片没有水印功能,下面小编和各位一起来看看。

UEditor编辑器没有上传图片加水印的功能,需要进行二次开发,本例是在PHPCMS系统中对百度编辑器进行二次开发,添加上传图片加水印功能。

首先打开UEditor编辑器文件目录的php文件夹,打开Uploader.class.php,把PHPCMS添加水印的方法复制过来,加到这个类所有成员方法最后面,然后进行修改如下:

//图片加水印

public function watermark($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)) return false;

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) return false;

switch($source_info[2]) {

case 1 :

$source_img = imagecreatefromgif($source);

break;

case 2 :

$source_img = imagecreatefromjpeg($source);

break;

case 3 :

$source_img = imagecreatefrompng($source);

break;

default :

return false;

}

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]) {

case 1 :

$water_img = imagecreatefromgif($w_img);

break;

case 2 :

$water_img = imagecreatefromjpeg($w_img);

break;

case 3 :

$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) {

case 1:

$wx = 5;

$wy = 5;

break;

case 2:

$wx = ($source_w - $width) / 2;

$wy = 0;

break;

case 3:

$wx = $source_w - $width;

$wy = 0;

break;

case 4:

$wx = 0;

$wy = ($source_h - $height) / 2;

break;

case 5:

$wx = ($source_w - $width) / 2;

$wy = ($source_h - $height) / 2;

break;

case 6:

$wx = $source_w - $width;

$wy = ($source_h - $height) / 2;

break;

case 7:

$wx = 0;

$wy = $source_h - $height;

break;

case 8:

$wx = ($source_w - $width) / 2;

$wy = $source_h - $height;

break;

case 9:

$wx = $source_w - $width;

$wy = $source_h - $height;

break;

case 10:

$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]) {

case 1 :

imagegif($source_img, $target);

break;

case 2 :

imagejpeg($source_img, $target, $this->w_quality);

break;

case 3 :

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);

return true;

}

public function check($image) {

return extension_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 = new Uploader($fieldName, $config, $base64, $watermark);

这样就大功告成了,本文主要是提供思路和参考。

以上所述就是本文的全部内容了,希望大家能够喜欢,能够对大家使用ue编辑器有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

ue编辑器拖拽上传图片_为百度UE编辑器上传图片添加水印功能相关推荐

  1. ue编辑器拖拽上传图片_Typora + PicGo打造超好用的Markdown编辑器

    工欲善其事必先利其器,既然决定要写作啦,一个好用的编辑器是必不可少的工具.相信作为一个程序员,大家应该也都比较了解Markdown语法,经过重重对比,我选定了Typora来作为Markdown编辑器. ...

  2. ue编辑器拖拽上传图片_editor.md实现拖拽剪切复制粘贴上传图片,文件插件

    editor.md作为一款Markdown编辑器,界面美观,功能强大 但是图片,文件上传方面缺少了剪切,拖拽上传,有那么一点每中不足,下面就简单实现一个,废话不多说,直接上代码. uploadImg. ...

  3. 免费开源低代码拖拽开发_资料来源:面向开源开发人员的免费代码搜索工具

    免费开源低代码拖拽开发 开源代码的金矿可供程序员使用,但是选择正确的库并了解如何使用它可能很棘手. Sourcegraph创建了一个搜索引擎和代码浏览器,以帮助开发人员找到更好的代码并更快地构建软件. ...

  4. tkinter的可视化拖拽工具_微信小游戏内测可视化工具!“人人都是小程序开发者”的时代到了...

    让小程序制作像"搭积木"一样简单! 作者丨Tsai 微信小程序最近可谓动作频频.7月25日,微信团队在开发者小课堂上透露即将推出"小程序消息提醒可订阅"等新能力 ...

  5. elementui拖拽对话框_实现element-ui对话框可拖拽功能

    element-ui对话框可拖拽及边界处理 应业务需求,需要实现对话框可拖拽问题,应element-ui没有提供官方支持,于是便参考大神的文章,得出了适合业务需要的解决方案.很多大神给出的代码是没有解 ...

  6. tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...

    今天我们来说一说数据可视化,想必很多人在入门数据分析之后,就会经常进行可视化的工作,所谓一图胜千言,图表用的好,真的是会事半功倍的.但现实情况下,很多人遇到的问题是: 你做的图表太丑了?你做的图表到底 ...

  7. tkinter的可视化拖拽工具_拒绝丑图表,教你用最简单的方法做最炫酷的可视化图表!附教程...

    数据可视化在我们的工作和生活中应用的越来越多,不管是在各种年度季度总结报告中,还是专业的数据分析报告中,我们经常要利用可视化图表来展现分析数据,一个高端大气的可视化图表就能给我们报告加分不少. 以前企 ...

  8. java 不让滚动条随着拖拽滑动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...

    演示事例 http://www.longstudy.club/vue-drag-scroll/index.html 最近在做一个新的项目,有个需求是这样的: 简单描述一下,就是鼠标拖动页面,整个页面会 ...

  9. overflow鼠标拖拽显示_[翻译] 从零开始的 .Net Shell 扩展教程 (四) - Shell 拖拽处理程序

    Vukr:[翻译] 从零开始的 .Net Shell 扩展教程 (三) - Shell 提示处理程序​zhuanlan.zhihu.com 使用 .Net 快速创建 Shell 拖拽处理程序 介绍 S ...

最新文章

  1. oracle 11.2.0.3 asm非rac双机,oracle11.2.0.4 rac asm启动故障
  2. python小程序3
  3. div宽度设置无效问题解决
  4. Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟
  5. 史上最全的JUC并发图
  6. 服务性服务–服务到服务的通话
  7. java中的账户冻结原理_java可重入锁(ReentrantLock)的实现原理
  8. 阿里云高级技术专家周晶:基于融合与协同的边缘云原生体系实践
  9. word中的表格空白部分整不掉,下面的表格拉不上来
  10. 一个简单的GridView分页通用程序
  11. Java调用.net开发的webService接口
  12. Dom4j中getStringValue()和getText()用法的区别
  13. VPP 的异步Crypto框架
  14. matlab在xrd中的应用,XRD物相分析(Jade软件的应用).pdf
  15. PHP 使用rabbitmq 入门教程
  16. 微信小程序地图插件系列(一):微信小程序使用高德地图(不定期更新)
  17. 项目管理工具的选型(jira,teambition,worktitle,tower,trello,云效,禅道)和禅道的基本介绍...
  18. 机器学习之随机森林算法
  19. 产品读书《演讲的力量》
  20. python 黎曼猜想_黎曼猜想简析

热门文章

  1. 解決memcache 有時無法連接的問題
  2. Functor、Applicative 和 Monad x
  3. 基于vue2+vuex+vue-router+sass+webpack的网易云音乐
  4. bzoj 2435: [Noi2011]道路修建 树上 dp
  5. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务
  6. mysql拆分字符串后行转列_mysql行转列(拆分字符串场景)
  7. s120面板控制调速_SINAMICS S120变频调速装置
  8. e3 1231 v3 达芬奇_黑苹果E3-1231-V3 + Z97-HD3+GTX960安装High Sierra10.13.6
  9. 【学习笔记】13、标准数据类型—元组
  10. 【转摘】IT人日常的学习—中国消费产业的基本盘和机遇