博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TinyMCE插件:RESPONSIVE filemanager 9 图片自动添加水印
阅读量:5164 次
发布时间:2019-06-13

本文共 3298 字,大约阅读时间需要 10 分钟。

跟踪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://www.cnblogs.com/dydashu/p/10063462.html

你可能感兴趣的文章
mybatis获得刚刚插入的自增的值
查看>>
读《不要等到毕业以后》后感
查看>>
Eureka常见问题
查看>>
自反acl
查看>>
从前端优化反观浏览器渲染原理
查看>>
基于Asterisk的VoIP开发指南——(2)Asterisk AGI程序编写指南
查看>>
ASP.NET MVC HtmlHelper用法大全
查看>>
在IIS中部署Asp.Net网站
查看>>
UITabBarController使用详解
查看>>
LeetCode - ZigZag Conversion
查看>>
windows服务安装卸载
查看>>
C# Dictionary<TKey,TValue>如何添加键重复的内容
查看>>
第五篇:web之前端之float的几种清除浮动方式
查看>>
三剑客之grep
查看>>
Workerman-文件监控-牛刀小试
查看>>
Shiro 自定义登陆、授权、拦截器
查看>>
在centos5开启telnet服务并验证
查看>>
docker容器操作
查看>>
HTML学习---基础知识学习
查看>>
ng跳转映射,被阿里云的云盾拦截,提示备案问题分析
查看>>