当前位置: 首页 > news >正文

添加水印图片的java代码

文章目录

    • 添加依赖
    • java代码demo

添加依赖

     <dependency><groupId>com.github.jai-imageio</groupId><artifactId>jai-imageio-core</artifactId><version>1.4.0</version></dependency>

java代码demo

package com.zkj.report.controller;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;public class WatermarkExample {public static void addWatermark(String inputImagePath) {try {File inputFile = new File(inputImagePath);long totalSpace = inputFile.getTotalSpace();System.out.println(totalSpace);BufferedImage srcImg = ImageIO.read(inputFile);//获取图片的宽int srcImgWidth = srcImg.getWidth(null);//获取图片的高int srcImgHeight = srcImg.getHeight(null);System.out.println("图片的宽:"+srcImgWidth);System.out.println("图片的高:"+srcImgHeight);//创建一个URL对象,获取网络图片的地址信息(网络图片)
//        URL url = new URL("https://pngimg.com/distr/img/ukraine.png");
//        //将URL对象输入流转化为图片对象 (url.openStream()方法,获得一个输入流)
//        Image srcImg = ImageIO.read(url.openStream());
//        //获取图片的宽
//        int srcImgWidth = srcImg.getWidth(null);
//        //获取图片的高
//        int srcImgHeight = srcImg.getHeight(null);
//        System.out.println("图片的宽:"+srcImgWidth);
//        System.out.println("图片的高:"+srcImgHeight);BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);// 加水印//创建画笔Graphics2D g = bufImg.createGraphics();//绘制原始图片g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);//-------------------------文字水印 start----------------------------
//        //根据图片的背景设置水印颜色
//        g.setColor(new Color(255,255,255,128));
//        //设置字体  画笔字体样式为微软雅黑,加粗,文字大小为60pt
//        g.setFont(new Font("微软雅黑", Font.BOLD, 60));
//        String waterMarkContent="图片来源:https://image.baidu.com/";
//        //设置水印的坐标(为原图片中间位置)
//        int x=(srcImgWidth - getWatermarkLength(waterMarkContent, g)) / 2;
//        int y=srcImgHeight / 2;
//        //画出水印 第一个参数是水印内容,第二个参数是x轴坐标,第三个参数是y轴坐标
//        g.drawString(waterMarkContent, x, y);
//        g.dispose();//-------------------------文字水印 end----------------------------//-------------------------图片水印 start----------------------------// 水印文件String waterMarkImage="/Users/candy/Desktop/11.png";Image srcWaterMark = ImageIO.read(new File(waterMarkImage));//获取水印图片的宽度int widthWaterMark= srcWaterMark.getWidth(null);//获取水印图片的高度int heightWaterMark = srcWaterMark.getHeight(null);//设置 alpha 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));//绘制水印图片  坐标为中间位置g.drawImage(srcWaterMark, (srcImgWidth - widthWaterMark) / 2,(srcImgHeight - heightWaterMark) / 2, widthWaterMark, heightWaterMark, null);// 水印文件结束g.dispose();//-------------------------图片水印 end----------------------------//待存储的地址String tarImgPath="/Users/candy/Desktop/jianxin.jpeg";// 输出图片FileOutputStream outImgStream = new FileOutputStream(tarImgPath);ImageIO.write(bufImg, "png", outImgStream);System.out.println("添加水印完成");outImgStream.flush();outImgStream.close();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {String inputImagePath = "/Users/candy/Desktop/WechatIMG83.jpeg";addWatermark(inputImagePath);}
}

相关文章:

添加水印图片的java代码

文章目录 添加依赖java代码demo 添加依赖 <dependency><groupId>com.github.jai-imageio</groupId><artifactId>jai-imageio-core</artifactId><version>1.4.0</version></dependency>java代码demo package com.zkj.report.c…...

uniapp创建项目入门【详细】

大家在学习vue和微信小程序之后&#xff0c;就可以开始来学习uniapp了&#xff0c;在uniapp中&#xff0c;一套代码可以跨越所有的平台&#xff0c;可以很方便的维护。接下来我们先来学习如何创建uinapp的项目 一、uniapp的创建需求 大家只要会vue和微信小程序的基础来学习unia…...

pytest功能特性介绍

前言 学pytest就不得不说fixture&#xff0c;fixture是pytest的精髓所在&#xff0c;就像unittest中的setup和teardown一样&#xff0c;如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。 fixture用途 1.做测试前后的初始化设置&#xff0c;如测试数据…...

UIE在实体识别和关系抽取上的实践

近期有做信息抽取的需求,UIE在信息抽取方面效果不错。 模型准备 huggingface上下载UIE模型:PaddlePaddle/uie-base Hugging Face 点击“Clone Repository”,确定git clone的链接 其中包含大文件,需要在windows安装git-lfs,在https://git-lfs.com/下载git-lfs,安装。…...

Baklib: 逆袭语雀的在线帮助中心,知识库管理工具

1. 介绍 在现代的技术发展中&#xff0c;知识管理变得越来越重要。特别是对于企业来说&#xff0c;拥有一个高效的知识库管理工具可以极大地提高工作效率和团队合作。Baklib就是这样一款在线帮助中心和知识库管理工具&#xff0c;它可以帮助企业集中管理和共享知识&#xff0c…...

web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例

翻到了之前的一个案例&#xff0c;基于three.js做的仓库布局模拟&#xff0c;地图元素除了大模型外&#xff0c;其他都是通过JSON数据解析动态生成的&#xff0c;例如墙体&#xff0c;柱子门口&#xff0c;地标等&#xff0c;集成了第一人称的插件可以第一人称进入场景有需要的…...

EditPlus取消自动.bak备份

Tools->Preferences->File 将√取消...

LLM - Transformer LLaMA2 结构分析与 LoRA 详解

目录 一.引言 二.图说 LLM 1.Transformer 结构 ◆ Input、Output Embedding ◆ PositionEmbedding ◆ Multi-Head-Attention ◆ ADD & Norm ◆ Feed Forward ◆ Linear & Softmax 2.不同 LLM 结构 ◆ Encoder-Only ◆ Encoder-Decoder ◆ Decoder-Only …...

前端技术搭建五子棋游戏(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了拼图游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成一个五子棋游戏&#xff0c;功能也比较简单简单&#xff0c;也…...

AST入门与实战(三):if节点转switch节点(瑞数5)

原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例&#xff0c;我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV < 4) {if (…...

小白到运维工程师自学之路 第七十一集 (kubernetes网络设置)

一、概述 Master 节点NotReady 的原因就是因为没有使用任何的网络插件&#xff0c;此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。 二、安装flannel 1、master下载kube-flannel.yml&#xff0c;所…...

day17 enum abstract interface 枚举 抽象 接口

一、枚举 enum 枚举本来的面目 创建Season类&#xff0c; 所有类都默认继承Object&#xff0c;写不写都一样 声明属性 &#xff1a;季节的名字、 季节的描述&#xff0c; 因为枚举的对象是看的见的客观事物&#xff0c; 想让它的属性不可修改 使用 final修饰表示最终的 &am…...

c刷题(二)

目录 加减混合运算 计算n的k次方 计算非负整数各位之和 字符串逆序 双指针 递归 矩阵计算 矩阵转置 加减混合运算 题目&#xff1a;计算1 / 1 - 1 / 2 1 / 3 - 1 / 4 1 / 5 …… 1 / 99 - 1 / 100 的值&#xff0c;打印出结果。 一般情况我们可以写个循环然后在用条…...

【leetcode】15. 三数之和(medium)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 这题真…...

【css】属性选择器

有些场景中需要在相同元素中获取具有特定属性的元素&#xff0c;比如同为input&#xff0c;type属性有text、button&#xff0c;可以通过属性选择器设置text和button的不同样式。 代码&#xff1a; <style> input[typetext] {width: 150px;display: block;margin-bottom…...

Redis_概述

1.redis概述 1.1 简介 截止到2021年12月 数据库排名https://db-engines.com/en/ranking redis(Remote Dictionary Server) 一个开源的key-value存储系统它支持存储的Value类型&#xff1a;包括String(字符串),list(链表),set(集合),zset(sorted set 有序集合),hash(哈希类型…...

【从零学习python 】16. Python字符串的format方法(一)

文章目录 字符串的format方法1. 概念:2. 字段名2.1 简单字段名2.1.1 省略字段名2.1.2 数字字段名2.1.3 变量字段名2.1.4 简单字段名的混合使用2.1.5 使用元组和字典传参 进阶案例 字符串的format方法 1. 概念: str.format() 方法通过字符串中的大括号{}来识别替换字段 replac…...

python re 模块 正则表达式

一、正则表达式基本符号 ^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配 零次到多次&#xff08;记忆方法&#xff1a;符号是星星&#xff0c;天上的星星可以是无数个也可以看不到&#x…...

c#设计模式-创建型模式 之 单例模式

目录 前言&#xff1a; 优点&#xff1a; 缺点: 饿汉式&#xff08;静态变量方式&#xff09; 懒汉式&#xff08;线程不安全&#xff09; 懒汉式&#xff08;双重检查锁定&#xff09; 推荐方式Lazy 总结&#xff1a; 前言&#xff1a; 这种模式涉及到一个单一的类&a…...

K-01BFS(2023河南萌新联赛第(五)场:郑州轻工业大学)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 思路&#xff1a; 直接枚举这个图中的拐点 这个拐点是经过左右平移到上下平移或者上下平移到左右平移 假设这个点事左到右后然后再从下到上 左到右就相当于走了个最长上升子序列&#xff0…...

【AI】cursor使用场景示例

基于 Cursor 官方文档及高赞社区实践按 8 个高频开发场景 给出可直接复制粘贴的 Prompt 模板。每个模板遵循官方推荐的 6 段式结构&#xff08;Goal → Context → Constraints → Examples → Output → Verify&#xff09;&#xff0c;并内嵌 上下文引用语法。一、新功能开发…...

高校科技成果转化难怎么办?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地 一、现状概述&#xff1a;成效与短板 高校作为科技成果的重要源头&#xff0c;近年来在创新策源和成果转化方面取得显著成效。然而&#xff0c;受制于传统转化模式的局限性&#xff0c;高校科…...

3步快速修复损坏MP4视频:Untrunc终极指南免费恢复珍贵回忆

3步快速修复损坏MP4视频&#xff1a;Untrunc终极指南免费恢复珍贵回忆 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否遇到过珍贵的家庭录像、重要会议记录或…...

SDR技术演进与5G/物联网应用解析

1. 软件定义无线电(SDR)技术演进与核心价值2002年2月&#xff0c;当Louis Luneau与Franois Luneau发布FlexCell白皮书时&#xff0c;他们可能没有预料到SDR技术会在二十年后成为5G和物联网的基础架构。传统无线电设备采用专用硬件电路实现特定通信协议&#xff0c;就像老式收音…...

终极Windows系统管理工具:WinUtil一键批量安装与优化完整指南

终极Windows系统管理工具&#xff1a;WinUtil一键批量安装与优化完整指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系统管…...

终极指南:Viper配置版本兼容处理 - 确保Go应用向前向后兼容的完整方案

终极指南&#xff1a;Viper配置版本兼容处理 - 确保Go应用向前向后兼容的完整方案 【免费下载链接】viper Go configuration with fangs 项目地址: https://gitcode.com/gh_mirrors/vi/viper Viper作为Go语言中最流行的配置管理库&#xff0c;以其"Go configuratio…...

2025届最火的六大降重复率神器实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为智能写作辅助工具&#xff0c;于学术论文撰写里呈现出显著效能&#xff0c;用户…...

Air724UG模块(4G全网通GPRS开发)-下载AT或者DTU固件和入门使用

Air724UG(4G全网通GPRS)开发-硬件使用说明模块简介1.实物图2.尺寸引脚图3.模块供电①:micro,usb接口供电②:VCC供电(5V~18V)③:VBAT供电(3.6V~4.3V)4.AT指令通信使用MCU和模块进行AT指令通信时,需要用到以下引脚;RX1:模组串口AT指令接收数据引脚;TX1:模组串口AT指令发送数据引脚…...

3大核心突破:ILSpy BAML反编译器如何重构WPF逆向工程生态

3大核心突破&#xff1a;ILSpy BAML反编译器如何重构WPF逆向工程生态 【免费下载链接】ILSpy .NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform! 项目地址: https://gitcode.com/gh_mirrors/il/ILSpy 当我们面对没…...

Akagi:5分钟快速上手!用AI提升你的雀魂麻将水平

Akagi&#xff1a;5分钟快速上手&#xff01;用AI提升你的雀魂麻将水平 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, …...