利用Thumbnilator对图片加文字水印

引言:
最近有给图片添加水印的需求,于是找了Thumbnailator工具;Thumbnailator中可以方便的对图片增加图片水印,但是在添加文字水印上却没有方法。

版本一(未使用Thumbnailator依赖):

/*** @author:kuqi* @createTime:2022/1/26 11:13* @description:*/
public class ImageUtil {/*** 图片添加水印** @param srcImgPath 需要添加水印的图片的路径* @param outImgPath 添加水印后图片输出路径* @param waterMark  水印的文字*/public static void mark(String srcImgPath, String outImgPath, String waterMark) {try {// 读取原图片信息File srcImgFile = new File(srcImgPath);Image srcImg = ImageIO.read(srcImgFile);int srcImgWidth = srcImg.getWidth(null);int srcImgHeight = srcImg.getHeight(null);// 初始化画布,图片多大,画布多大BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);Graphics2D g = bufImg.createGraphics();//指定要绘制的图片g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);double fontLength = srcImgWidth * 0.3;//根据比例设置文字占的长度,即文字长度int fontSize = (int) (fontLength / 5 * 0.9);//文字大小,0.9为差值//设置字体样式,加粗,大小Font font = new Font("微软雅黑", Font.BOLD, fontSize);//设置文字颜色g.setColor(Color.BLACK);g.setFont(font);//绘制文字的横纵坐标int x = (int) (srcImgWidth - fontLength - 3);int y = srcImgHeight - fontSize - 3;//绘制文字水印g.drawString(waterMark, x, y);g.dispose();// 输出图片FileOutputStream outImgStream = new FileOutputStream(outImgPath);ImageIO.write(bufImg, "jpg", outImgStream);outImgStream.flush();outImgStream.close();} catch (Exception e) {e.printStackTrace();}}}

实例效果
在这里插入图片描述

版本二(使用Thumbnailator依赖,以流的形式对图片进行处理)

/*** 添加文字水印* @param bytes     //图片的字节数组* @param waterText //文字水印* @param opacity   //水印的不透明度度,1不透明~0透明* @param width     //水印的高度* @param height    //水印的宽度* @return //Graphics2D中rotate方法设置文字的的倾斜度*/public static byte[] addTextWater(byte[] bytes, String waterText, int width, int height, float opacity) {InputStream in = null;ByteArrayOutputStream bout = null;try {in = new ByteArrayInputStream(bytes);bout = new ByteArrayOutputStream(1024);// 将画布大小绘制成原图大小BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个graphics2d,用于绘制BufferedImageGraphics2D g = bi.createGraphics();//清除矩形区域g.clearRect(0, 0, width, height);// 设置绘图区域透明bi = g.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);g.dispose();g = bi.createGraphics();// 设置字体类型、大小、加粗、颜色、旋转度(未使用)double fontLength = width*0.3; //文字的长度,按比例给定int fontSize = (int) (fontLength/5*0.9); //文字的大小,5表示多少个字儿,0.9为差值//字体颜色g.setColor(new Color(0, 0, 0));Font font = new Font("微软雅黑", Font.BOLD, fontSize);g.setFont(font);//绘制文字的横纵坐标,其位置是在图片的右下角int x = (int) (width - fontLength + 3); //3为差值,可以自调int y = height - (fontSize/2) + 7; //7补个差值,可以自调//填充文字在画布上g.drawString(waterText, x, y);//结束绘画g.dispose();Thumbnails.of(in).scale(1).watermark(Positions.CENTER, bi, opacity).toOutputStream(bout);return bout.toByteArray();} catch (Exception ex) {throw new RuntimeException(ex);} finally {try {if (in != null) {in.close();}if (bout != null) {bout.close();}} catch (Exception ex) {ex.printStackTrace();}}}

实例效果
在这里插入图片描述

参考文献
https://www.cnblogs.com/qlqwjy/p/9326468.html
https://blog.csdn.net/zengchao9/article/details/84744236

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24171.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字水印算法

任务背景及简介 随着互联网的普及和数字技术的广泛应用,信息媒体的数字化极大地提高了信息的存取效率, Intenet 的普及又为数字信息在世界范围内的迅速传递开辟了便捷的途径,数字产品变得极大丰富并且传播便捷,但与此同时版权保护问题也日益突…

数字图像中添加水印

实际上,在产品里能够设置密码并且在产品中添加水印是最理想的防盗措施,因为设置密码是为了防止别人剽窃技术或使用产品,而添加水印更多的是一种补救措施,是在他人成功盗取自己技术的前提下,在法律上夺取主动权的砝码。下面来介绍一下如何在MATLAB中实现往数字图像中添加水印效果…

信息隐藏与数字水印技术

1 信息隐藏 1. 1 信息隐藏模型信息隐藏 (Information Hiding)不同于传统的密码学技术。密码技术主要是研究如何将机密信息进行特殊的编码,以形成不可识别的密码形式 (密文 )进行传递;而信息隐藏则主要研究如何将某一机密信息秘密隐藏于另一公开的信息…

给图片加盲水印(数字水印)所有功能免费使用

盲水印是不可见,但实际存在图片中的水印。需通过特殊的技术手段才能获取到水印。 . 一次可以给十张图片加图片水印或文字水印,不限使用次数 . 只能给单张图片解水印且需要原水印图片或水印文字 . 水印密码必须为数字,可设可不设。如设置了…

“数字水印”来临,一波“反ChatGPT”的技术开始冒头 | 星球资讯

数科星球 原创 作者丨数数 编辑丨十里香 ChatGPT爆火,对于这项技术来说,似乎无所不能。从作曲、小说、文章再到编剧,人们这些天为该项技术忙活的不亦乐乎。 但事情很快得到了反转,有些人开始担心这项新的技术会被坏人所利用。而…

微软半日游,和CSDN同学们走进名企

上周三(2021-11-24),跟随 CSDN 《新程序员》组织的 "走进名企"活动,和邹欣老师等一众大佬们探访了北京微软亚洲研究院。真是一次令我开眼界的旅程,一起看看~ 作为一个普普通通的北漂程序员来说,大…

Seata 与三大平台携手编程之夏,百万奖金等你来拿

作者:Seata社区 社区简介 Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 在阿里系内部一直扮演着分布式数据一致性中间件的角色,几乎每笔交易都要…

阿里技术官整合的四大主流中间件笔记,让你高薪摸鱼,不再秃头背锅

RabbitMQ: 优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置 缺点:性能和吞吐量较差,不易进行二次开发 RocketMQ: 优点:性能好,稳定可靠,有活…

一位微软技术大牛,工作8年的职业经验分享

写在前面 进击的叻叻是小灰的一位朋友,本文整理了他今年9月返校进行校友职场经验分享的内容,从职业选择、职业发展、工作体验和职业认知四个方面,分享自己微软八年职业生涯的经历和感悟。 这篇文章是对当时校友职场经验分享会内容的精炼和补充…

尚硅谷商品汇项目复习文档

项目资料 项目源码:https://gitee.com/HusePanghu/project-SP 项目地址:HusePanghu.SPH 前言 提示:本文档的编撰初衷是用于复习和回顾该项目,而非该项目的教程文档,弊处多多,敬请包涵。欢迎大家在评论区交…

千橡CEO陈一舟5日聊微软入股Facebook和校内网

千橡CEO陈一舟5日聊微软入股Facebook和校内网 http://www.sina.com.cn 2007年11月01日 17:50 新浪科技 千橡集团董事长兼CEO陈一舟(新浪科技配图) 新浪科技讯 11月1日消息,千橡集团董事长兼CEO陈一舟将于11月5日10:30做客新浪科技白银时代,届时他将就微…

今天面了个阿里秒杀项目组的,见识到了基础天花板被震撼到了

在京东工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记…

互联网暴力裁员,唯有神技面试八股文手册,能助各位码农突破囧境

很多人都说今年对于IT行业根本没有所谓的“金三银四”“金九银十”。在各大招聘网站或者软件上不管是大厂还是中小公司大多都是挂个招聘需求,实际并不招人;在行业内的程序员基本都已经感受到了任老前段时间口中所谓的“寒气”。 虽然事实确实是如此&…

27位技术实战派负责人齐聚 深聊降本增效 你一定不想错过!

倒计时6天,11月4日 杭州云栖大会-探索增长动能峰会即将启动 阿里巴巴集团CTO线&阿里云智能互联网行业线& ​阿里云智能基础产品事业部联合出品 27位技术实战派负责人齐聚 共同深入讨论企业降本增效的话题 欢迎一起来 看点 1:27位实战…

商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来

2023年4月10日,商汤科技SenseTime技术交流日活动在上海举行,分享了以“大模型大算力”推进AGI(通用人工智能)发展的战略布局,并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示,商汤科…

AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元

Alex 发自 凹非寺量子位 | 公众号 QbitAI 自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。 然鹅,现实可能更残酷QAQ...... 据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的&…

阿里CEO下令所有产品接入大模型!钉钉对标微软Office,已解锁近10项新功能

丰色 发自 凹非寺量子位 | 公众号 QbitAI “阿里版GPT”通义千问邀测没过几天—— 今天,在2023阿里云峰会现场,CEO张勇就宣布: 阿里巴巴所有产品未来都将接入“通义千问”大模型,进行全面改造。 与此同时,通义千问的能…

GPT-3核心成员出走打造ChatGPT最强竞品!12项任务8项更强,最新估值50亿美元

衡宇 萧箫 发自 凹非寺量子位 | 公众号 QbitAI 因不满老东家成为微软附庸,11名OpenAI前员工怒而出走。 如今带着“ChatGPT最强竞品”杀回战场,新公司估值50亿美元,一出手就获得3亿美元融资。 这家公司名叫Anthropic,新推出的聊天机…

一页PPT自动生成短视频的研究

希望通过一些技术,将以前自己讲过的PPT转换成有解说的短视频,从而进行一些分发 旁白到语音 从文字转换成语音我们首先想到的就是TTS,这其中我也是用了各式各样的TTS,发现发音电子音非常强,听听起来很不舒服。后来发现…

Edge浏览器安装油猴插件以及好用的插件推荐

目录 一、介绍 二、下载步骤 一、介绍 油猴插件是非常好用的,可以帮助我们解放双手眼睛这些。帮助学习,通过这些 二、下载步骤 1.打开edge浏览器,右上角点击三小点,选择扩展 2.点击这个 3.点击下载油猴插件 下载失败的看&a…