java 给图片加水印(水印位置与角度可定义)

  • 添加水印图片方法
  • 重载

添加水印图片方法

 import javax.imageio.ImageIO;import javax.swing.*;import java.awt.*;import java.awt.image.BufferedImage;import java.io.*;/*** 给图片添加水印、可设置水印图片位置与旋转角* @param iconPath      水印图片路径* @param srcImgPath    源图片路径* @param targerPath    目标图片路径* @param location      水印位置:1、左上角,2、右上角,3、左下角,4、右下角,5、中间* @param degree        旋转角:顺时针角度*/public static void markImageByIcon(String iconPath, String srcImgPath, String targerPath, Integer location, Integer degree) {OutputStream os = null;try {Image srcImg = ImageIO.read(new File(srcImgPath));int width = srcImg.getWidth(null);int height = srcImg.getHeight(null);BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 得到画笔对象Graphics2D g = buffImg.createGraphics();// 设置对线段的锯齿状边缘处理g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);g.drawImage(srcImg, 0, 0, width, height, null);if (null != degree) {// 设置水印旋转g.rotate(Math.toRadians(degree), (double) buffImg.getWidth() / 2, (double) buffImg.getHeight() / 2);}// 水印图象的路径 水印一般为gif或者png的,这样可设置透明度ImageIcon imgIcon = new ImageIcon(iconPath);// 得到Image对象。Image syImg = imgIcon.getImage();float alpha = 0.5f; // 透明度int syWidth = syImg.getWidth(null);int syHeight = syImg.getHeight(null);// 如果水印图片高或宽大于目标图片是做的处理,使水印宽或高等于目标图片的宽高,并且等比例缩放int newSyWidth = syWidth;int newSyHeight = syHeight;if (syWidth > width) {newSyWidth = width;newSyHeight = (int) ((double)newSyWidth / syWidth * height);}if (newSyHeight > height) {newSyHeight = height;newSyWidth = (int) ((double)newSyHeight / syHeight * newSyWidth);}// 根据位置参数确定坐标位置int x = 0, y = 0;// location 位置: 1、左上角,2、右上角,3、左下角,4、右下角,5、中间switch (location) {case 1: break;case 2:x = width - newSyWidth;break;case 3:y = height - newSyHeight;break;case 4:x = width - newSyWidth;y = height - newSyHeight;break;case 5:x = (width - newSyWidth) / 2;y = (height - newSyHeight) / 2;break;default: break;}g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));// 表示水印图片的位置g.drawImage(syImg, x, y, newSyWidth, newSyHeight, null);// 水印文件结束g.dispose();os = new FileOutputStream(targerPath);// 生成图片ImageIO.write(buffImg, "JPG", os);log.info("图片完成添加Icon印章... srcImgPath:{}, targerPath:{}", srcImgPath, targerPath);} catch (Exception e) {log.info("图片添加Icon印章异常! iconPath:{}, srcImgPath:{}, targerPath:{}, location:{}", iconPath, srcImgPath, targerPath, location);} finally {try {if (null != os) {os.close();}} catch (Exception e) {log.error("", e);}}}

重载

 /*** 给图片添加中间位置水印图* @param iconPath 水印图片路径* @param srcImgPath 源图片路径* @param targerPath 目标图片路径*/public static void markImageByIcon(String iconPath, String srcImgPath, String targerPath) {markImageByIcon(iconPath, srcImgPath, targerPath, 5, null);}

java 给图片加水印图片(水印位置与角度可定义)相关推荐

  1. 使用python给图片加个盲水印

    什么是盲水印 盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形"盖章",可以用在数据泄露溯源.版权保护等场景 blind_watermark python中 ...

  2. iOS修改图片尺寸和裁剪功能以及 图片上加图片 图片加文字(水印效果)

    1.修改图片尺寸 - (  UIImage  *)imageWithImageSimple:(  UIImage  *)image scaledToSize:(  CGSize  )newSize { ...

  3. java对话框背景图片插入_关于java编程窗体加背景图片的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给一个登录界面加背景图片,一直加不上,同学给了一套代码,加上去也不行,彻底跪了,求大神指点一下.ps:窗体的大小和图片大小一样.只把有用的部分代码贴了出来 ...

  4. css实现精灵图片加载图片失败

    失败提示: 1.控制台报错file not found. 2.资源的images文件夹下找不到加载的图片. 失败可能原因: 1.图片路径错误(最常见):层级关系一定要对. 2.css选择器编写错误(我 ...

  5. java怎么将加载图片消除_Java中加载图片的方法

    Java中添加图片,我知道有两种方法 用new ImageIcon("地址")函数,将图片放到JLabel中,然后把JLabel放到需要的地方就可以了 ImageIcon bg=n ...

  6. java背景图片加上组件_关于 java swing组件加背景图片的问题

    最近自己做了一个小的进销存软件,背景图片加上后不能最大化.尝试了好几种方法 最后终于把问题解决了.下面把自己写的实例 分享一下: 一个是在JFrame窗体中加如背景图片 一个是在Jpanel 面板中加 ...

  7. java界面中加载图片,Java登录界面中添加背景图片,程序无错,但加载不了图片,求帮忙...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.*; import javax.swing.*; public class Demo extends JFrame { p ...

  8. ASP.NET给图片加水印——上传文件

    在上一篇文章介绍了指定图片文件,给指定的文件添加水印 在本文中将加水印应用于项目中,在用户上传图片文件时,为图片加相应的水印 仍然使用一般处理程序(.ashx) 用户都是通过上传控件,将图片文件添加进 ...

  9. python标志图片_python图片加水印 - 小众知识

    图片加"水印"的制作过程:我们经常会看见一些地图网站的地图切片上都有一个l:很明显吧!:这样logo是怎么加上去的呢?我就花了点时间在网:现在我就介绍下实现所谓"水印&q ...

  10. 图片加水印后下载(满屏水印,单个水印,可自定义角度)

    现阶段需要实现图片导出添加水印的内容,查询资料总结了如下的图片导出加水印工具类,分享给大家 工具类实现内容: 图片添加满屏水印后保存到固定地址 图片添加满屏水印后以输出流输出 图片左上角添加单个水印 ...

最新文章

  1. c++ gdb 绑定源码_【Vue原理】VNode 源码版
  2. 在公共区块链中通过加密保护数据
  3. MSM8994 thermal管理
  4. 辣眼睛:程序员这样过儿童节
  5. 用安卓虚拟机运行程序时程序停止_程序运行时Trace:DynamoRIO Tool
  6. CS231n课程笔记翻译:图像分类笔记(下)
  7. C# 得到本机局域网IP地址
  8. Ansible 学习总结(2)—— Ansible playbook 入门详解
  9. js 中call,apply,bind的区别
  10. 七言 感大兴安岭大火
  11. 唐努乌梁海问题的由来
  12. 热门论坛排行top100--2010年07月11日[转]
  13. windows下mysql高可用_[@小川游鱼][¥20]Windows平台MySQL高可用方案-问答-阿里云开发者社区-阿里云...
  14. cruzer php sandisk 闪迪u盘量产工具_闪迪u3量产工具下载|
  15. Spring 框架学习—控制反转(IOC)
  16. 神舟笔记本怎么进入bios?神舟笔记本bios设置U盘启动教程
  17. JQuery EasyUI 教程
  18. RabbitMQ实现订单超时设计思路、以及在订单过期临界点支付成功如何处理
  19. 未能找到下列包文件: C:\Users\Administrator\Desktop\DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe
  20. UCK全球路演走进佛山,跨链技术将加速区块链商业应用

热门文章

  1. SpringBoot大数据分析后台管理系统平台
  2. 串口、Modbus通信协议
  3. 中文点阵字库的使用方法
  4. 未来教育计算机二级2016版,20163未来教育计算机二级题库(操作题).docx
  5. 无线系统笔记(1)--梯度、散度、旋度(麦克斯韦先导)
  6. MVC/POJO/POJI/DAO/DTO/VO
  7. 苹果手表计算机功能键,认识Mac的功能键,最值得你记住的苹果电脑快捷键列表...
  8. 工程课系列-Level3-Web应用课
  9. 第6节 Tableau 直方图 | 评分直方图
  10. java开发自学怎么样_Java工程师的薪资待遇怎么样,自学Java开发可以吗?