使用thumbnailator给图片加水印
引入方式:Maven
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
这个是谷歌的一个开源项目
https://github.com/coobird/thumbnailator
需要注意,自从2014年发布了0.4.8版本以后,不再更新
/**
* 添加水印后,输出文件到path
* @param is 原图的输入流
* @param markImg 水印图片
* @param path 输出路径
* @throws IOException
*/
public static void markPicToFile(InputStream is,File markImg,String path) throws IOException {
BufferedImage image = ImageIO.read(is);
BufferedImage markImage = ImageIO.read(markImg);
//原图的宽高
int imgWidth = image.getWidth(null);
int imgHeight = image.getHeight(null);
//水印图片的宽高
int markWidth = markImage.getWidth(null);
int markHeight = markImage.getHeight(null); //计算输出水印图片的位置x和y轴
int mark_x = imgWidth - imgWidth / 9;
int mark_y = imgWidth / 9-imgWidth / 10;
//计算输出水印图片的大小
int mark_width = imgWidth / 10;
int mark_height = (imgWidth * markHeight) / (10 * markWidth); //将水印图片压缩成输出的大小
markImage = Thumbnails.of(markImage).size(mark_width,mark_height).asBufferedImage(); //watermark(位置,水印图,透明度0.5f=50%透明度)
//outputQuality(控制图片的质量,1f=100%高质量)
Thumbnails.of(image)
.size(imgWidth, imgHeight)
.watermark(new Coordinate(mark_x,mark_y), markImage, 1f)
.outputQuality(1f).toFile(path);
}
水印图片的大小,我是按原图的比例进行压缩,是原图的十分之一,水印位置是右上角
使用thumbnailator给图片加水印的更多相关文章
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...
- thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印
今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- php 分享两种给图片加水印的方法
本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...
- Java图片处理(二)图片加水印
图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...
- PHP给图片加水印
<?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...
- 如何用node.js批量给图片加水印
上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...
- 使用 ImageEnView 给图片加水印,及建缩略图
摘要: 使用 ImageEnView 给图片加水印,及建缩略图 {Power by hzqghost@21cn.com}unit CutWater; interface uses Math,imag ...
- php对图片加水印--将图片先缩小,再在上面加水印
方法: /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $water ...
随机推荐
- Building and booting Nexus 5 kernel
1. Downloading toolchain and setup. git clone https://android.googlesource.com/platform/prebuilts/gc ...
- Maven clean install 跳过单元测试
1.使用MVN命令 mvn clean install -DskipTests 或者 mvn clean install -Dmaven.test.skip=true 2.Eclipse中设置clea ...
- 方法签名_spring aop_around
//注解签名 方法签名 Signature signature = pjp.getSignature(); MethodSignature methodSignature= (MethodSignat ...
- 使用Cookie记住登录用户
在登录表单中,写入: 记住我: <select name="cookie"> <option value="0" selected ...
- mkpasswd - 为用户产生新口令
总览 SYNOPSIS mkpasswd [ args ] [ user ] 介绍 INTRODUCTION mkpasswd 为用户产生口令并自动应用.它是基于O'Reilly的书<Explo ...
- 求助高手,Nginx配置二级域名跳转 地址栏不变咋处理?
做域名镜像的rewrite即可rewrite ^/(.*)$ http://二级域名/$1 last;
- 使用node来搭建简单的后台业务
现在作为一个前端开发人员,越来越多的技术需要学习,近几天学习了下node.js,在很多前端以及后端应用了该技术,现在记录下自己摸索的一些简单的知识记录下来. 我的博客都是直接分享应用方法,没有说明一些 ...
- activity manager
首先 activity manager 作为一个独立的服务存在,所有系统中的所有 app 的 activity 都通过这个 service 来管理 同时 activity manager 维护着多个 ...
- GUI学习之二十三——QComboBox学习总结
我们在前面分别介绍了两种输入控件:纯键盘文本输入和步长调节器,下面我们来学习下组合框(下拉选择输入). 一.简介 1.下拉框是一个组合控件(包含一个文本显示控件和一个按钮).它默认显示最小的控件给用户 ...
- 浅谈C++ allocator内存管理(对比new的局限性)(转)
STL中,对内存管理的alloc的设计,迫使我去学习了allocator类.这里对allocator内存管理做了点笔记留给自己后续查阅.allocator类声明.定义于头文件<memory> ...