Java图片添加水印工具

废话少说,直接上代码:

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;public class ImgUtil {public static void main(String[] args) {String srcImgPath = "D:/test/123.jpg";String iconPath = "d:test/printtext.png";pressImage(srcImgPath, iconPath);pressText(srcImgPath, "水印内容说明。如(仅限xxx使用,他用无效)", 0, Color.red);}public static boolean pressImage(String targetImg, String waterImg) {try {File file = new File(targetImg);Image image = ImageIO.read(file);int width = image.getWidth(null);int height = image.getHeight(null);BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D g = bufferedImage.createGraphics();g.drawImage(image, 0, 0, width, height, null);Image waterImage = ImageIO.read(new File(waterImg)); // 水印文件int width_1 = waterImage.getWidth(null);int height_1 = waterImage.getHeight(null);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,0.5f));int widthDiff = width - width_1;int heightDiff = height - height_1;int x = widthDiff / 2;// 水印位置int y = heightDiff / 2;// 水印位置g.drawImage(waterImage, x, y, width_1, height_1, null); // 水印文件结束g.dispose();ImageIO.write(bufferedImage, "png", file);return true;} catch (IOException e) {e.printStackTrace();return false;}}/*** 照片添加水印* @param targetImg 原始照片路径* @param pressText 水印文字* @param fontSize 文字大小 <=0时字体大小自适应* @param color 文字颜色* @return*/public static Boolean pressText(String targetImg, String pressText, int fontSize, Color color) {try {File file = new File(targetImg);Image image = ImageIO.read(file);int width = image.getWidth(null);int height = image.getHeight(null);BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D g = bufferedImage.createGraphics();g.drawImage(image, 0, 0, width, height, null);if (fontSize<=0) {fontSize = 4*width/(5*pressText.length());}g.setFont(new Font("宋体", Font.PLAIN, fontSize));g.setColor(color);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,0.5f));int width_1 = fontSize * getLength(pressText);int height_1 = fontSize;int widthDiff = width - width_1;int heightDiff = height - height_1;int x = widthDiff / 2;//水印位置int y = heightDiff / 2;g.drawString(pressText, x, y + height_1);g.dispose();ImageIO.write(bufferedImage, "jpg", file);return true;} catch (Exception e) {e.printStackTrace();return false;}}public static int getLength(String text) {int textLength = text.length();int length = textLength;for (int i = 0; i < textLength; i++) {if (String.valueOf(text.charAt(i)).getBytes().length > 1) {length++;}}return (length % 2 == 0) ? length / 2 : length / 2 + 1;}
}

Java图片添加水印工具相关推荐

  1. java 图片添加水印工具

    图片添加水印工具类 /** * * */ package utils;import com.util.UnicodeReader;import javax.imageio.ImageIO; impor ...

  2. java 图片image工具类,ImageUtil.java

    1.java 图片image工具类,ImageUtil.java package com.broadway.numpeople.utils;import java.awt.Color; import ...

  3. java给图片添加水印工具类

    给图片添加水印这个功能以前做项目的时候遇到过 但是后来好久不用今天突然想起来  就随笔记录一下吧  随便在记录一下自己当初踩的坑 package Img;import java.awt.Color; ...

  4. java 图片合成 工具类_Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】...

    本文实例讲述了Java实现的微信图片处理工具类.分享给大家供大家参考,具体如下: 现在 外面核心,图片文章比较少,看了拷贝代码,而用不了,用相应jar包处理,很多等比例缩放,达不到 想要的给予的期望: ...

  5. java图片添加水印实现自动换行

    package com.tgpms.utils;import cn.hutool.core.util.StrUtil;import javax.imageio.ImageIO; import java ...

  6. Java图片添加水印功能

    图片添加水印 需求是需要添加多个斜的水印,如果只是添加单个水印可以参考这个:传送门 直接上代码: private static void waterMarkAdd(String sourceFile, ...

  7. java图片处理工具类,很实用哦

    笔者以前在项目里要求处理图片,当时在博客里看到这篇不错的帖子,但是没有看到原作的出处,于是就不客气的转载下来了...同时感谢原创写出这么好的东西. 这个图像工具类可实现以下常用功能:缩放图像.切割图像 ...

  8. 图片添加水印 - 免费在线图片添加水印工具

    图片上怎么添加水印文字?一刀工具箱提供在线给图片加水印,照片上添加文字,给图片加水印,保证自己的图片不被别人侵犯. 代码片段 startDown(){let that = this;uni.showL ...

  9. java 图片合成 工具类_Java实现的图片上传工具类完整实例

    本文实例讲述了Java实现的图片上传工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import javax.imageio.ImageIO; impo ...

最新文章

  1. Guava Cache缓存的移除与读取
  2. 机器学习:数据驱动的科学
  3. mac os x 安装 wireshark 的问题
  4. android8.0及发布时间,android 8.0什么时候发布_android 8.0发布时间_android 8.0新特性
  5. 二、JS运算符、NaN
  6. jquery 插件 分析
  7. msm8937 bootloader流程分析
  8. 静默安装oracle11,Oracle11g静默安装
  9. 什么是软件架构?常用的软件架构
  10. 双人对战的球类游戏ios源码项目
  11. 奥克兰大学商学院计算机专业,奥克兰大学的商科专业 推荐三大专业
  12. Web前端开发项目(记忆卡片)
  13. 笔记-中项/高项学习期间的错题笔记2
  14. Flash cs3简单的动画制作
  15. Markdown:如何修改插入图片的大小或比例
  16. C语言--已知三边求三角形面积
  17. 软件工程实践结对作业一
  18. 计算机启动后桌面上什么都没有,电脑开机后,桌面上什么都没有了?我怎么处理?好着急啊...
  19. 搜狗拼音输入法2015 v7.2f 官方版
  20. vue标准时间改为时间戳_区块链科普005:什么是时间戳?白话通俗讲解时间戳是什么意思?...

热门文章

  1. 写html代码的ws,wstest.html
  2. Python自动化操作Word15000字超强总结,帮你解放双手!(文末送书 )
  3. JDK安装及多版本JDK安装
  4. \x 开头编码的数据解码成中文
  5. 引入0-1规划的运输学问题
  6. idea怎么解决没有自动提示代码功能,和idea右下角的小人有什么作用
  7. [linux-007] 国内的一些出版社laltex book模板汇集
  8. oracle查看cpu内存,查看Oracle CPU情况
  9. 攻防演练中攻击队攻击的必备能力
  10. New Moto X 2014 全版本RSDFastboot刷官方底包教程