跟踪function()

搜索(filemanager/upload.php)

在代码中发现,上传成功后,会传回JSON信息数据,于是最后找到方法是

  1. $upload_handler = new UploadHandler($uploadConfig, true, $messages);

同时大叔发现upload.php自己没有uploadhandler()方法,但是引入入

  1. require('UploadHandler.php');
  2. $messages = null;

于是乎

搜索(filemanager/UploadHandler.php)

在代码中发现UploadHandler{}是个大类,只能继续在里面找方法

发现判断尺寸真实有效时,会判断是否为post传值,如果是会将数据进行操作

  1. if ($initialize) {
  2. $this->initialize();
  3. }
  4.  
  5. protected function initialize()
  6. {
  7. switch ($this->get_server_var('REQUEST_METHOD')) {
  8. ...
  9. case 'POST':
  10. $this->post($this->options['print_response']);
  11. break;
  12. ...
  13. }
  14. }

于是查看post()方法,发现handle_file_upload()方法中放进了所有的POST图片信息

  1. public function post($print_response = true)
  2. {
  3. ...
  4. $files[] = $this->handle_file_upload(
  5. isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
  6. $file_name ? $file_name : (isset($upload['name']) ?
  7. $upload['name'] : null),
  8. $size ? $size : (isset($upload['size']) ?
  9. $upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
  10. isset($upload['type']) ?
  11. $upload['type'] : $this->get_server_var('CONTENT_TYPE'),
  12. isset($upload['error']) ? $upload['error'] : null,
  13. null,
  14. $content_range
  15. );
  16. ...
  17. }

查看handle_file_upload()方法,终于找到了move_uploaded_file()方法,按方法逻辑和两个参数的值,他正在将post临时图片上传至程序图片文件夹内。

  1. protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null)
  2. {
  3. ...
  4. move_uploaded_file($uploaded_file, $file_path);
  5. ...
  6. }

于是大叔决定在该函数下增加一个加水印的方法,让他可以对上传的每一张图片操作,但是无论怎么写,只要一有操作方法就会各种提示错误,于是只能放弃。

这时大叔记起,插件的缩略并不是直接生成的,他的流程是:

上传图片成功->重新刷新dialog.php->判断有新图片存在->自动生成缩略图

于是大叔开始查看插件自动生成缩略图的方法,结果一找就找到了,他正好就在上传图片的方法下面。

  1. protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null)
  2. {
  3. ...
  4. if ($this->is_valid_image_file($file_path)) {
  5. $this->handle_image_file($file_path, $file);
  6. }
  7. ...
  8. }

于是大叔将水印方法写在下面

  1. if ($this->is_valid_image_file($file_path)) {
  2.  
  3. //自动生成缩略图
  4. $this->handle_image_file($file_path, $file);
  5.  
  6. //===========================水印图片.S
  7. $src_path = 'mark.png'; //水印图片
  8. $dst_path = $file_path; //需要添加水印图片
  9. //创建图片的实例
  10. $dst = imagecreatefromstring(file_get_contents($dst_path));
  11. $src = imagecreatefromstring(file_get_contents($src_path));
  12. //获取水印图片的宽高
  13. list($src_w, $src_h) = getimagesize($src_path);
  14. //获取要加水印图片的宽高
  15. list($dst_w, $dst_h) = getimagesize($dst_path);
  16. //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
  17. //imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 50);
  18. //如果水印图片本身带透明色,则使用imagecopy方法
  19. imagecopy($dst, $src, ($dst_w - $src_w - 10), ($dst_h - $src_h - 10), 0, 0, $src_w, $src_h);
  20. //输出图片
  21. list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
  22. switch ($dst_type) {
  23. case 1://GIF
  24. header('Content-Type: image/gif');
  25. imagegif($dst);
  26. break;
  27. case 2://JPG
  28. header('Content-Type: image/jpeg');
  29. imagejpeg($dst);
  30. break;
  31. case 3://PNG
  32. header('Content-Type: image/png');
  33. imagepng($dst);
  34. break;
  35. default:
  36. break;
  37. }
  38.  
  39. //清除图片缓存
  40. imagedestroy($dst);
  41. imagedestroy($src);
  42. //===========================水印图片.E
  43.  
  44. }

上传邓妞...

测试成功!


感谢:

TinyMCE插件:RESPONSIVE filemanager 9 图片自动添加水印的更多相关文章

  1. jQuery图片自动添加水印插件

    JS脚本(jQuery)为图片加水印效果预览:http://hovertree.com/texiao/jquery/94/ 本功能使用HTML5实现,可为图片加上文字水印,可设置文字,设置颜色,位置等 ...

  2. TinyMCE插件:FileManager [4.x-6.x] 配置及BUG处理

    FileManager最新版已升级到9.x,9.x新增了对文件的批量处理,但仍然有部分同学在继续使用6.x,这里大叔整理了一份自己在配置6.x时,遇到的问题和解决方案. 安装 下载安装包解压后,在根目 ...

  3. TinyMCE插件:Filemanager [4.x-6.x] 图片自动添加水印

    上传图片程序(filemanager/upload.php) 在if (!empty($_FILES) && $upload_files)有一个move_uploaded_file() ...

  4. ASP.NET给图片自动添加水印

    先建一个类,感觉注释已经很详细了,有不懂的欢迎评论 using System; using System.Collections.Generic; using System.Drawing; usin ...

  5. TinyMCE插件:Filemanager [4.x-6.x] 文件名统一格式化

    上传图片程序(filemanager/upload.php) 在if (!empty($_FILES) && $upload_files)中上传图片时,在文件正式上传至服务器前,有一次 ...

  6. TinyMCE插件:RESPONSIVE filemanager 9 安装与配置

    RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为每个用户创建子目录 上传文件效果图: 浏览文件效果图: 文件说明: filemanager ...

  7. [转]响应式表格jQuery插件 – Responsive tables

    本文转自:http://www.shejidaren.com/responsive-tables-for-bootstrap-3.html 这个Responsive tables jQuery插件依赖 ...

  8. DedecmsV5.7本地上传缩略图无法自动添加水印的解决方法

    问题:dedecms后台 系统->图片水印设置 图片水印设置有开启了,但是本地上传缩略图无法自动添加水印 网上有很多资料,所以记录一下 1.打开dede(实际项目后台文件夹)/archives_ ...

  9. Dedecms本地上传缩略图无法自动添加水印的解决方法

    客户遇到一个问题,DEDECMS(V5.7)后台添加文档时,本地上传缩略图无法自动添加水印(系统设置里的图片水印设置没有问题),找了半天,终于找到了解决方法,留个记号: 打开dede/archives ...

随机推荐

  1. 聊天室或文字直播间的效果(AS开发实战第二章学习笔记)

    聊天室或文字直播间的效果即是新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小.位置保持不变聊天室用到的属性与方法说明gravity 指定文本的对齐方式,取值left|botto ...

  2. element ui下拉框如何实现默认选择?

    <template> <el-select v-model="value4" clearable placeholder="请选择"> ...

  3. mongodb 3.4复制集详解

    1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...

  4. windows远程桌面无法粘贴复制的解决方法

    案例一:未勾选剪贴板,进入 远程桌面连接选项“本地资源->本地设备和资源->剪贴板”中,勾选剪贴板. 案例二:已勾选剪贴板,但是无法粘贴复制,进入远程服务器,关闭[rdpclip.exe] ...

  5. SQL-SERVER学习(一) 数据表的基本操作

    1.创建一个数据库,数据库的名字是UserInfo create database UserInfo; 2.创建一个数据表,数据表的名字是UserInfocreate table UserInfo( ...

  6. CI框架, 参数验证

    /** * 统一API参数检验方法 * * 调用示例 check_param(array('money' => array('required', 'integer', 'greater_tha ...

  7. 在windows上安装nginx并注册

    在windows上安装nginx并注册 一.前言   最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 二.在windows下面安装   首先需要到nginx的 ...

  8. EventBus事件总线

    EventBus事件总线的使用-自己实现事件总线   在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类.这对于桌面应用或者独立的windows服务 ...

  9. 关于一篇对epoll讲的比较好的一篇文章

    原文地址http://www.cnblogs.com/lojunren/p/3856290.html 前言 I/O多路复用有很多种实现.在linux上,2.4内核前主要是select和poll,自Li ...

  10. Webpack笔记(一)——从这里入门Webpack

    准备了挺久,一直想要好好深入了解一下Webpack,之前一直嫌弃Webpack麻烦,偏向于Parcel这种零配置的模块打包工具一些,但是实际上还是Webpack比较靠谱,并且Webpack功能更加强大 ...