java实现图片暗水印
java实现图片暗水印
文章目录
- 代码
- 运行结果
- 原图片
- 水印后的图片
代码
public class ImageUtils {// 水印字体private static final Font FONT = new Font("微软雅黑", Font.PLAIN, 14);// 透明度private static final AlphaComposite COMPOSITE = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f);// 水印之间的间隔private static final int X_MOVE = 150;// 水印之间的间隔private static final int Y_MOVE = 200;/*** 打水印(文字)** @param srcImgPath 源文件地址* @param font 字体* @param markContentColor 水印颜色* @param waterMarkContent 水印内容* @param outImgPath 输出文件的地址*/public static void markWithContent(String srcImgPath, Font font, Color markContentColor,String waterMarkContent,String outImgPath) {FileOutputStream fos = null;try {// 读取原图片信息File srcFile = new File(srcImgPath);File outFile = new File(outImgPath);BufferedImage srcImg = ImageIO.read(srcFile);// 图片宽、高int imgWidth = srcImg.getWidth();int imgHeight = srcImg.getHeight();// 图片缓存BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);// 创建绘图工具Graphics2D graphics = bufImg.createGraphics();// 画入原始图像graphics.drawImage(srcImg, 0, 0, imgWidth, imgHeight, null);// 设置水印颜色graphics.setColor(markContentColor);// 设置水印透明度graphics.setComposite(COMPOSITE);// 设置倾斜角度graphics.rotate(Math.toRadians(-35), (double) bufImg.getWidth() / 2,(double) bufImg.getHeight() / 2);// 设置水印字体graphics.setFont(font);// 消除java.awt.Font字体的锯齿graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);int xCoordinate = -imgWidth / 2, yCoordinate;// 字体长度int markWidth = FONT.getSize() * getTextLength(waterMarkContent);// 字体高度int markHeight = FONT.getSize();// 循环添加水印while (xCoordinate < imgWidth * 1.5) {yCoordinate = -imgHeight / 2;while (yCoordinate < imgHeight * 1.5) {graphics.drawString(waterMarkContent, xCoordinate, yCoordinate);yCoordinate += markHeight + Y_MOVE;}xCoordinate += markWidth + X_MOVE;}// 释放画图工具graphics.dispose();// 输出图片fos = new FileOutputStream(outFile);ImageIO.write(bufImg, "jpg", fos);} catch (Exception e) {e.printStackTrace();} finally {if (fos != null) {try {fos.flush();fos.close();} catch (Exception e) {e.printStackTrace();}}}}//计算水印文本长度//1、中文长度即文本长度 2、英文长度为文本长度二分之一public static int getTextLength(String text) {//水印文字长度int length = text.length();for (int i = 0; i < text.length(); i++) {String s = String.valueOf(text.charAt(i));if (s.getBytes().length > 1) {length++;}}length = length % 2 == 0 ? length / 2 : length / 2 + 1;return length;}public static void main(String[] args) {ImageUtils.markWithContent("E:/data/image/2.png", FONT, Color.darkGray, "ls65535","E:/data/image/2c.png");}
运行结果
原图片
水印后的图片
java实现图片暗水印相关推荐
- Java为图片加水印
Java为图片加水印工具类 一.简介 使用Java在图片上加上水印,可以添加文字.图片 编写一个工具类的代码优化和整理 使用建造者模式提高工具类的可配置性 二.效果图 三.基本参数 // ++++++ ...
- JAVA实现图片加水印及Base64图片字符串加水印
JAVA实现图片加水印及Base64图片字符串加水印 可将根据不同需求选择场景一,场景二来实现家水印操作,个人感觉比我上一遍文章<base64字符串加水印 >实在 场景一: 涉及上送过来的 ...
- java给图片加水印_Java 为图片添加水印(图片水印,文字水印)
Java 为图片添加水印(图片水印,文字水印) 2014-07-28·WeaponX 5267 次浏览 ```java import java.awt.Color; import java.awt.F ...
- java给图片加水印_java如何给图片加水印
最近研究一下java如何给上传的图片加上水印,专门为这个功能写了一个方法类,然后再进行调用,代码如下:package WaterMark; import java.awt.AlphaComposite ...
- java给图片加水印_java中怎么样将水印加在图片的上面或者下面
展开全部 方法e68a84e8a2ad62616964757a686964616f31333239303331一: import java.awt.*; import java.awt.image.* ...
- Java生成动态生成水印图片,为图片打水印. Java为图片打水印
整体思路如下 : (删除了部分代码,不影响代码执行,根据实际情况进行调整) 获取需要打水印的图片 获取画布对象 设置水印属性 为图片画上水印数据 生成带水印的图片 返回路径 import cn.hut ...
- java实现图片加水印
package com.example.demo;import org.junit.jupiter.api.Test; import org.springframework.boot.test.con ...
- java 水印 位置_Java实现图片加水印且控制位置和透明度
Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...
- SpingBoot/JAVA实现给图片加水印功能(通过thumbnailator库)
前言 最近某项目有个加水印的需求,JAVA实现给已上传的图片增加水印并输出的功能,图片A+水印B=合成带水印缓存图片C(就是不需要保存到硬盘,不占用空间),目前网上的解决方案挺多但是挺乱,于是趁机整理 ...
最新文章
- 敏捷软件开发实践——估算与计划02
- 访问SharePoint站点时,提示:Service Unavailable
- 为什么python画不了图-解决python中使用plot画图,图不显示的问题
- VTK:比较随机生成器用法实战
- python基础---常用模块的常用方法
- 邻接矩阵实现图的深度优先搜索(1)
- Android 为你的应用程序添加快捷方式【优先级高的快捷方式】
- 你与数据科学家只差这26条python技巧
- 随想录(python第三方库中的 setup.py)
- 图片简单上色,花开花落云卷云舒。
- 开源 画图_[软件使用05] 快速使用 Deeptools 对 ChIP-seq 数据画图!
- 牛客网--华为机试在线训练1:字符串最后一个单词的长度
- InnoDB如何实现多版本
- 如何高效开发支付接口对接
- 【java算法】二分查找算法详解
- pdf论文中visio画的图出现Times New Roman 字体未嵌入
- 回归的误差服从正态分布吗_线性回归中的正态分布
- Datawhale组队学习周报(第044周)
- XP下免U盘安装Ubuntu 18.04(持续更新遇到的问题,20200422更新)
- vmware虚拟机centos7扩容
热门文章
- IndexedDB教程
- redis未授权漏洞的事前、事中、事后、特征信息
- java.lang.SecurityException: Injecting to another application requires INJECT_EV ENTS permission
- 第三方支付经济崛起 拉卡拉支付双管齐下
- MySQL 增删改查 基础
- 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载六)
- 电脑卡慢原因之磁盘占用100%
- rust怎么上邮轮_邮轮旅行好玩吗
- Win10搜索要点怎么关闭?(就是搜索框右侧出现了小图标)
- 墨者学院在线靶场WP