修改ueditor1_4_3编辑器jsp版使上传图片支持水印

主要思路:ueditor编辑器上传图片以request请求发送到后台,后台接收通过流的形式进行处理,我们只要在后台拦截到图片文件并进行加水印处理就能够实现该功能。

一、 下载ueditor1_4_3编辑器jsp版,使其能够正常工作;

二、 修改源码

  主要修改StorageManager.java文件

  1) 添加将上传文件和水印文件合成带水印图片的代码

 /**
     * 将上传文件和水印文件合成带水印图片
     */
    public static void setWaterMark(File targetFile, String rootPath, String path) throws IOException {
        //源文件
        Image src = ImageIO.read(targetFile);
        int width = src.getWidth(null);
        int height = src.getHeight(null);
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.createGraphics();
        g.drawImage(src, 0, 0, width, height, null);

        // 水印文件
        String FILENAME = rootPath + “ueditor/image/waterMark.png”;

        //FILENAME为url地址时,如:http://www.baidu.com/abc.png
//        URL url = new URL(FILENAME);
//        InputStream pressIs = url.openStream();

        //FILENAME为本地路径时,如:D:/abc.png
        InputStream pressIs = new FileInputStream(FILENAME);
        Image src_biao = ImageIO.read(pressIs);
        int width_biao = src_biao.getWidth(null);
        int height_biao = src_biao.getHeight(null);
        g.drawImage(src_biao, width - width_biao, height - height_biao, width_biao, height_biao, null);

        g.dispose();
        FileOutputStream out = new FileOutputStream(path);
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(image);
        out.close();
    }

  2) 修改saveTmpFile方法

private static State saveTmpFile(File tmpFile, String rootPath, String path, Long maxSize) {
    State state = null;
    File targetFile = new File(path);

    if (targetFile.canWrite()) {
        return new BaseState(false, AppInfo.PERMISSION_DENIED);
    }
    try {
        FileUtils.moveFile(tmpFile, targetFile);
    } catch (IOException e) {
        return new BaseState(false, AppInfo.IO_ERROR);
    }

    //判断是否为图片文件
    if (maxSize == 2048000) {
        try {
            //加水印
            setWaterMark(targetFile, rootPath, path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    state = new BaseState(true);
    state.putInfo("size", targetFile.length());
    state.putInfo("title", targetFile.getName());

    return state;
}

三、 重启上传图片后直接带水印。

时间: 2024-08-22 16:02:12

修改ueditor1_4_3编辑器jsp版使上传图片支持水印的相关文章

mysql修改表字段编码,使其支持emoji表情

普通的UTF8编码是不支持emoji表情插入的,会报异常: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xB0\xE5\x9C...' for column 'name' at row 1 将表字段的编码单独改成utf8mb4,即可支持emoji表情的插入. 修改的sql语句为 mysql> alter table user modify column name varchar(255) char

用resin使IIS支持jsp和servlet的步骤介绍

IISWEB以其管理操作简单和对ASP的支持而受不少人的喜欢.这里介绍怎么用resin使IIS支持jsp和servlet. 一.分别安装配置iis和resin1.1使各自都单独能正常运行.iis和resin1.1的安装后路径如下:c:apache和c:esin1.1. 二.配置IIS 1.拷贝iis_srun.dll到IISscripts目录"c:inetpubscripts"; 2.在c:inetpubscripts目录下创建配置文件(resin.ini)用于指定resin的配置文件

ueditor1.4.3 jsp版在ssh下的配置

对于ueditor就不介绍了,网上一大把,直接言归正传,其主要问题是图片等的上传. 开发环境: myeclipse2014+tomcat7+spring3.1.1+hibernate4.1.4+struts2.1+ueditor1.4.3 jsp版 备注:上述ssh环境其实就是MyEclipse2014自带的. 新建web project,命名为:news:搭建好ssh环境,从ueditor官网下载最新版:1.4.3 jsp版. 在WebRoot下新建文件夹:ueditor,将下载解压后的ued

·基于thinkphp5.0和百度编辑器UMeditor 跨域上传图片实现

1.下载两者源码: 2,简单配置 :   a. 一套thinkphp框架是显示前端界面,搭配编辑器环境.对应域名为 http://tp.com:  这是前端界面配置 但是还要修改一下umeditor.config.js 文件    这里配置那个URL ,我思考了很久         我是这么想的  本地站点域名配置到了www/tp5/public位置 ,现在是要实例编辑器加一个路径,而编辑器的文件位置就在public下面: 在此情况下 编辑器会在界面正常显示: 好接下来考虑的问题就是图片上传了.

dedecms整合百度编辑器(Ueditor)之上传图片加水印的办法

Ueditor抓取远程图片加水印方法 打开getRemoteImage.php, 找到://远程抓取图片配置 在上面添加: require_once('../../../dede/config.php');//dede为你的后台目录 require_once(DEDEADMIN."/inc/inc_archives_functions.php"); 继续修改getRemoteImage.php, 找到: fwrite( $fp2 , $img ); 在下面添加: @WaterImg($

Linux下安装libiconv使php支持iconv函数

libiconv组件安装好了可以让我们php支持iconv函数了,这个函数的作用就是字符编码强制转换了,下面和111cn小编一起来看一个Linux中安装libiconv使php支持iconv函数的例子吧. 问题: 线上运行的lamp服务器,php不支持iconv函数. 解决方法: 安装libiconv,重新编译apache,使php支持iconv函数,实现utf-8和gb2312编码的转换. 具体步骤: 1.下载libiconv cd /usr/local/src wget http://ftp

配置apache使之支持浏览器端的缓存

当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求. 一.适用直接访问,非F5刷新页面的情况下 Expires是HTTP/1.0的缓存头, Cache-Control: max-age 是HTTP/1.1是用来进行HTTP缓存的头.Expires指定了资源过期的绝对时间,GMT格式,Cache-Control: max-age指定了资源过期的相对时间,单

编译Linux内核4.6.3使其支持NTFS文件系统

编译安装4.6.3内核,并使其支持NTFS文件系统   在编译内核之前的虚拟机环境搭建,虚拟机硬盘可用空间不得小于7G,内存需大大于2.5G, 根据个人电脑配置适当调整,可提高效率.   一. 下载内核源码包 https://www.kernel.org/     二.查看虚拟机是否具备编译条件 1) [[email protected] /]# rpm -q make make-3.82-21.el7.x86_64 [[email protected] /]# rpm -q gcc gcc-4

使用mod_encoding使apache支持中文附件名

本地测试环境为apache2.2.31,PHP5.3.27,操作系统为RHEL6.4x86_64,使用mod_encoding工具使apache支持中文附件名,比如http://www.example.com/合同.rar 1.先修改操作系统的语言环境,使linux本地支持中文,可以查看中文文件名 修改/etc/sysconfig/i18n文件将LANG="en_US.UTF-8"SYSFONT="latarcyrheb-sun16"修改为 LANG="z