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 ...
随机推荐
- 聊天室或文字直播间的效果(AS开发实战第二章学习笔记)
聊天室或文字直播间的效果即是新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小.位置保持不变聊天室用到的属性与方法说明gravity 指定文本的对齐方式,取值left|botto ...
- element ui下拉框如何实现默认选择?
<template> <el-select v-model="value4" clearable placeholder="请选择"> ...
- mongodb 3.4复制集详解
1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...
- windows远程桌面无法粘贴复制的解决方法
案例一:未勾选剪贴板,进入 远程桌面连接选项“本地资源->本地设备和资源->剪贴板”中,勾选剪贴板. 案例二:已勾选剪贴板,但是无法粘贴复制,进入远程服务器,关闭[rdpclip.exe] ...
- SQL-SERVER学习(一) 数据表的基本操作
1.创建一个数据库,数据库的名字是UserInfo create database UserInfo; 2.创建一个数据表,数据表的名字是UserInfocreate table UserInfo( ...
- CI框架, 参数验证
/** * 统一API参数检验方法 * * 调用示例 check_param(array('money' => array('required', 'integer', 'greater_tha ...
- 在windows上安装nginx并注册
在windows上安装nginx并注册 一.前言 最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 二.在windows下面安装 首先需要到nginx的 ...
- EventBus事件总线
EventBus事件总线的使用-自己实现事件总线 在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类.这对于桌面应用或者独立的windows服务 ...
- 关于一篇对epoll讲的比较好的一篇文章
原文地址http://www.cnblogs.com/lojunren/p/3856290.html 前言 I/O多路复用有很多种实现.在linux上,2.4内核前主要是select和poll,自Li ...
- Webpack笔记(一)——从这里入门Webpack
准备了挺久,一直想要好好深入了解一下Webpack,之前一直嫌弃Webpack麻烦,偏向于Parcel这种零配置的模块打包工具一些,但是实际上还是Webpack比较靠谱,并且Webpack功能更加强大 ...