TinyMCE插件:RESPONSIVE filemanager 9 图片自动添加水印
跟踪function()
搜索(filemanager/upload.php)
在代码中发现,上传成功后,会传回JSON信息数据,于是最后找到方法是
$upload_handler = new UploadHandler($uploadConfig, true, $messages);
同时大叔发现upload.php自己没有uploadhandler()方法,但是引入入
require('UploadHandler.php');
$messages = null;
于是乎
搜索(filemanager/UploadHandler.php)
在代码中发现UploadHandler{}是个大类,只能继续在里面找方法
发现判断尺寸真实有效时,会判断是否为post传值,如果是会将数据进行操作
if ($initialize) {
    $this->initialize();
}
protected function initialize()
{
    switch ($this->get_server_var('REQUEST_METHOD')) {
        ...
        case 'POST':
            $this->post($this->options['print_response']);
            break;
        ...
    }
}
于是查看post()方法,发现handle_file_upload()方法中放进了所有的POST图片信息
public function post($print_response = true)
{
...
$files[] = $this->handle_file_upload(
isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
$file_name ? $file_name : (isset($upload['name']) ?
$upload['name'] : null),
$size ? $size : (isset($upload['size']) ?
$upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
isset($upload['type']) ?
$upload['type'] : $this->get_server_var('CONTENT_TYPE'),
isset($upload['error']) ? $upload['error'] : null,
null,
$content_range
);
...
}
查看handle_file_upload()方法,终于找到了move_uploaded_file()方法,按方法逻辑和两个参数的值,他正在将post临时图片上传至程序图片文件夹内。
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null)
{
...
move_uploaded_file($uploaded_file, $file_path);
...
}
于是大叔决定在该函数下增加一个加水印的方法,让他可以对上传的每一张图片操作,但是无论怎么写,只要一有操作方法就会各种提示错误,于是只能放弃。
这时大叔记起,插件的缩略并不是直接生成的,他的流程是:
上传图片成功->重新刷新dialog.php->判断有新图片存在->自动生成缩略图
于是大叔开始查看插件自动生成缩略图的方法,结果一找就找到了,他正好就在上传图片的方法下面。
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null)
{
...
if ($this->is_valid_image_file($file_path)) {
$this->handle_image_file($file_path, $file);
}
...
}
于是大叔将水印方法写在下面
if ($this->is_valid_image_file($file_path)) {
    //自动生成缩略图
    $this->handle_image_file($file_path, $file);
    //===========================水印图片.S
    $src_path = 'mark.png'; //水印图片
    $dst_path = $file_path; //需要添加水印图片
    //创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));
    //获取水印图片的宽高
    list($src_w, $src_h) = getimagesize($src_path);
    //获取要加水印图片的宽高
    list($dst_w, $dst_h) = getimagesize($dst_path);
    //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
    //imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 50);
    //如果水印图片本身带透明色,则使用imagecopy方法
    imagecopy($dst, $src, ($dst_w - $src_w - 10), ($dst_h - $src_h - 10), 0, 0, $src_w, $src_h);
    //输出图片
    list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
    switch ($dst_type) {
        case 1://GIF
            header('Content-Type: image/gif');
            imagegif($dst);
            break;
        case 2://JPG
            header('Content-Type: image/jpeg');
            imagejpeg($dst);
            break;
        case 3://PNG
            header('Content-Type: image/png');
            imagepng($dst);
            break;
        default:
            break;
    }
    //清除图片缓存
    imagedestroy($dst);
    imagedestroy($src);
    //===========================水印图片.E
}
上传邓妞...

测试成功!
感谢:
- https://blog.csdn.net/u012866684/article/details/68068265
- https://segmentfault.com/a/1190000006811582
- http://blog.sina.com.cn/s/blog_7c788ced01018a2l.html
TinyMCE插件:RESPONSIVE filemanager 9 图片自动添加水印的更多相关文章
- jQuery图片自动添加水印插件
		JS脚本(jQuery)为图片加水印效果预览:http://hovertree.com/texiao/jquery/94/ 本功能使用HTML5实现,可为图片加上文字水印,可设置文字,设置颜色,位置等 ... 
- TinyMCE插件:FileManager [4.x-6.x] 配置及BUG处理
		FileManager最新版已升级到9.x,9.x新增了对文件的批量处理,但仍然有部分同学在继续使用6.x,这里大叔整理了一份自己在配置6.x时,遇到的问题和解决方案. 安装 下载安装包解压后,在根目 ... 
- TinyMCE插件:Filemanager [4.x-6.x] 图片自动添加水印
		上传图片程序(filemanager/upload.php) 在if (!empty($_FILES) && $upload_files)有一个move_uploaded_file() ... 
- ASP.NET给图片自动添加水印
		先建一个类,感觉注释已经很详细了,有不懂的欢迎评论 using System; using System.Collections.Generic; using System.Drawing; usin ... 
- TinyMCE插件:Filemanager [4.x-6.x] 文件名统一格式化
		上传图片程序(filemanager/upload.php) 在if (!empty($_FILES) && $upload_files)中上传图片时,在文件正式上传至服务器前,有一次 ... 
- TinyMCE插件:RESPONSIVE filemanager 9 安装与配置
		RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为每个用户创建子目录 上传文件效果图: 浏览文件效果图: 文件说明: filemanager ... 
- [转]响应式表格jQuery插件 – Responsive tables
		本文转自:http://www.shejidaren.com/responsive-tables-for-bootstrap-3.html 这个Responsive tables jQuery插件依赖 ... 
- DedecmsV5.7本地上传缩略图无法自动添加水印的解决方法
		问题:dedecms后台 系统->图片水印设置 图片水印设置有开启了,但是本地上传缩略图无法自动添加水印 网上有很多资料,所以记录一下 1.打开dede(实际项目后台文件夹)/archives_ ... 
- Dedecms本地上传缩略图无法自动添加水印的解决方法
		客户遇到一个问题,DEDECMS(V5.7)后台添加文档时,本地上传缩略图无法自动添加水印(系统设置里的图片水印设置没有问题),找了半天,终于找到了解决方法,留个记号: 打开dede/archives ... 
随机推荐
- 目前比较全的CSS重设(reset)方法总结(转)
			原文地址 在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈 ... 
- 深入理解并发编程之----synchronized实现原理
			版权声明:本文为博主原创文章,请尊重原创,未经博主允许禁止转载,保留追究权 https://blog.csdn.net/javazejian/article/details/72828483 [版权申 ... 
- 微软操作系统 Windows Server 2012 R2 官方原版镜像
			微软操作系统 Windows Server 2012 R2 官方原版镜像 Windows Server 2012 R2 是由微软公司(Microsoft)设计开发的新一代的服务器专属操作系统,其核心版 ... 
- 华为HCNP实验 DHCP配置
			HCNP实验 DHCP配置 学习目的 1.掌握ip pool的配置方法2.掌握DHCP服务器的配置方法3.掌握DHCP客户端的配置方法4.掌握DHCP中继的配置方法5.掌握DHCP Snooping的 ... 
- PHP实现无限分类
			PHP实现无限分类 无限分类 递归 无限级分类是一种设计技巧,在开发中经常使用,例如:网站目录.部门结构.文章分类.笔者觉得它在对于设计表的层级结构上面发挥很大的作用,比如大家在一些平台上面,填写邀请 ... 
- Jmeter(一)工具的简单介绍(z)
			一.JMeter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,J ... 
- 一直在用的一个javascript网站
			http://www.dottoro.com/ 很不错,例子丰富,解释详细,全面:非常好的参考资料站. 
- hibernate 映射 数据库number 映射为 double 为空 报错问题
			将 数据库表 映射成hibernate 实体类时 将number --- double 如果数据库中number 为空,查找数据时将报错 Can not set double field ***** ... 
- Android(java)学习笔记208:Android下的属性动画高级用法(Property Animation)
			1. 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画 ... 
- log4j框架logger的继承关系以及使用场景
			log4j框架logger的继承关系以及使用场景 log4j日志框架logger是存在继承关系的,我们一般都会在log4j.properties文件中定义log4j.rootLogger.其他所有lo ... 
