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实现图片暗水印相关推荐

  1. Java为图片加水印

    Java为图片加水印工具类 一.简介 使用Java在图片上加上水印,可以添加文字.图片 编写一个工具类的代码优化和整理 使用建造者模式提高工具类的可配置性 二.效果图 三.基本参数 // ++++++ ...

  2. JAVA实现图片加水印及Base64图片字符串加水印

    JAVA实现图片加水印及Base64图片字符串加水印 可将根据不同需求选择场景一,场景二来实现家水印操作,个人感觉比我上一遍文章<base64字符串加水印 >实在 场景一: 涉及上送过来的 ...

  3. java给图片加水印_Java 为图片添加水印(图片水印,文字水印)

    Java 为图片添加水印(图片水印,文字水印) 2014-07-28·WeaponX 5267 次浏览 ```java import java.awt.Color; import java.awt.F ...

  4. java给图片加水印_java如何给图片加水印

    最近研究一下java如何给上传的图片加上水印,专门为这个功能写了一个方法类,然后再进行调用,代码如下:package WaterMark; import java.awt.AlphaComposite ...

  5. java给图片加水印_java中怎么样将水印加在图片的上面或者下面

    展开全部 方法e68a84e8a2ad62616964757a686964616f31333239303331一: import java.awt.*; import java.awt.image.* ...

  6. Java生成动态生成水印图片,为图片打水印. Java为图片打水印

    整体思路如下 : (删除了部分代码,不影响代码执行,根据实际情况进行调整) 获取需要打水印的图片 获取画布对象 设置水印属性 为图片画上水印数据 生成带水印的图片 返回路径 import cn.hut ...

  7. java实现图片加水印

    package com.example.demo;import org.junit.jupiter.api.Test; import org.springframework.boot.test.con ...

  8. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

  9. SpingBoot/JAVA实现给图片加水印功能(通过thumbnailator库)

    前言 最近某项目有个加水印的需求,JAVA实现给已上传的图片增加水印并输出的功能,图片A+水印B=合成带水印缓存图片C(就是不需要保存到硬盘,不占用空间),目前网上的解决方案挺多但是挺乱,于是趁机整理 ...

最新文章

  1. 敏捷软件开发实践——估算与计划02
  2. 访问SharePoint站点时,提示:Service Unavailable
  3. 为什么python画不了图-解决python中使用plot画图,图不显示的问题
  4. VTK:比较随机生成器用法实战
  5. python基础---常用模块的常用方法
  6. 邻接矩阵实现图的深度优先搜索(1)
  7. Android 为你的应用程序添加快捷方式【优先级高的快捷方式】
  8. 你与数据科学家只差这26条python技巧
  9. 随想录(python第三方库中的 setup.py)
  10. 图片简单上色,花开花落云卷云舒。
  11. 开源 画图_[软件使用05] 快速使用 Deeptools 对 ChIP-seq 数据画图!
  12. 牛客网--华为机试在线训练1:字符串最后一个单词的长度
  13. InnoDB如何实现多版本
  14. 如何高效开发支付接口对接
  15. 【java算法】二分查找算法详解
  16. pdf论文中visio画的图出现Times New Roman 字体未嵌入
  17. 回归的误差服从正态分布吗_线性回归中的正态分布
  18. Datawhale组队学习周报(第044周)
  19. XP下免U盘安装Ubuntu 18.04(持续更新遇到的问题,20200422更新)
  20. vmware虚拟机centos7扩容

热门文章

  1. IndexedDB教程
  2. redis未授权漏洞的事前、事中、事后、特征信息
  3. java.lang.SecurityException: Injecting to another application requires INJECT_EV ENTS permission
  4. 第三方支付经济崛起 拉卡拉支付双管齐下
  5. MySQL 增删改查 基础
  6. 抖音赚钱记,新手如何玩转抖音,每天赚300起(连载六)
  7. 电脑卡慢原因之磁盘占用100%
  8. rust怎么上邮轮_邮轮旅行好玩吗
  9. Win10搜索要点怎么关闭?(就是搜索框右侧出现了小图标)
  10. 墨者学院在线靶场WP