常用的图像加水印一般是在原图上找一个位置将水印图像置于上方,本质上就是对两幅图像的叠加融合。这里提供两种方式进行图像加水印,一种是直接将水印图像叠加在原图指定位置,一种是将水印通过一定透明度与原图指定位置像素进行融合。

当然在水印融合的同时需要考虑,指定位置叠加水印图像时,水印图像边界不会超过原图边界。另外也可以使用本身带有透明通道的图像作为水印图像,融合之后的图像可以形成镂空水印。

测试图像:

水印图像:

第一种方式实现:

public BufferedImage waterMarkerWithLocation(BufferedImage srcImage,BufferedImage waterMarker,int x,int y) {int width = srcImage.getWidth();int height = srcImage.getHeight();BufferedImage resultImage = new BufferedImage(width, height, srcImage.getType());for(int i = 0; i < width;i++) {for(int j = 0; j < height;j++) {int rgb = srcImage.getRGB(i, j);if (i > x & i < (waterMarker.getWidth() + x) & j > y & j < (waterMarker.getHeight() + y)) {rgb = waterMarker.getRGB(i - x, j - y);}resultImage.setRGB(i, j, rgb);}}return resultImage;}

效果:

第二种方式实现:

public BufferedImage waterMarkerWithTransparent(BufferedImage srcImage,BufferedImage waterMarker,double transparent,int x,int y) {int width = srcImage.getWidth();int height = srcImage.getHeight();BufferedImage resultImage = new BufferedImage(width, height, srcImage.getType());for(int i = 0; i < width;i++) {for(int j = 0; j < height;j++) {int rgb = srcImage.getRGB(i, j);if (i > x & i < (waterMarker.getWidth() + x) & j > y & j < (waterMarker.getHeight() + y)) {int rgb1 = waterMarker.getRGB(i - x, j - y);double r = (rgb >> 16) & 0xff;double g = (rgb >> 8) & 0xff;double b = rgb & 0xff;double r1 = (rgb1 >> 16) & 0xff;double g1 = (rgb1 >> 8) & 0xff;double b1 = rgb1 & 0xff;r = (1 - transparent) * r + transparent * r1;g = (1 - transparent) * g + transparent * g1;b = (1 - transparent) * b + transparent * b1;rgb = (255 & 0xff) << 24 | (clamp((int)r) & 0xff) << 16 | (clamp((int)g) & 0xff) << 8 | (clamp((int)b) & 0xff);}resultImage.setRGB(i, j, rgb);}}return resultImage;}

测试效果:
当透明度设置为0.5时

透明度0.2时:

图像处理之添加图像水印相关推荐

  1. 图像处理之添加文字水印

    在之前图像处理博客中介绍了给图像添加图像水印,比如某些时候我们需要将照片的拍摄时间.位置.天气等信息标注到图像上.今天记录一下一种使用java在图像上添加文字水印的方法,使用的时java自带的Grap ...

  2. Word控件Spire.Doc 【页面背景】教程(8) ;在 C# 中将文本水印和图像水印添加到 Word 文档

    文字水印和图片水印是Word文档中的两种水印.文本水印总是显示一些与单词上下文相关的附加信息.而图像水印用于使Word文档更具吸引力.本节将演示如何使用 Spire.Doc 在 C# 中为 Word ...

  3. 【视频加水印】Video Watermark Pro视频添加动态水印(附工具下载地址)

    <Video Watermark Pro>是一款专门给视频加水印的软件,这个软件可以帮用户快速加水印,而且可以批量加水印,软件操作起来简单又快捷,有需要的用户不要错过. 软件特色 1.将水 ...

  4. 图像水印添加工具Watermark Sense for Mac

    Watermark Sense for Mac是一款支持添加文本和图像水印的图像水印工具,Watermark Sense Mac版可以控制水印透明度.选择混合模式.应用阴影.复制水印等外观及参数.Wa ...

  5. Word如何添加图片水印,看这里就够了!怎样在word加入图像水印

    水印相信大家都些了解,在我们生活中有许多的防伪产品都有水印,对于自己的文件文档或者一些其它信息,对外公布的话容易被别人copy,对于这种情况我们可以添加一些水印,水印应能为受到版权保护的信息产品的归属 ...

  6. AI技术在图像水印处理中的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 简介 水印作为一种保护版权的有效方式被广泛地应用于海量的互联网图像 ...

  7. SFFAI分享 | 张杰:针对图像处理网络的模型水印【附PPT与视频资料】

    深度学习已经在各个领域取得了巨大的成功,诸如图像分类.语音识别.自然语言处理等.训练一个性能好的深度学习模型往往需要大量的高质量数据和昂贵的计算资源.然而,这些模型存在着严重的被侵权的风险.攻击者可通 ...

  8. 如何利用深度学习技术处理图像水印?

    作者 | 李翔 转载自公众号视说AI(ID: techtalkai) 作者简介:李翔,国内某互联网大厂AI民工,前携程酒店图像技术负责人,主导并参与一系列图像智能化算法的研发与落地工作.在ICCV和C ...

  9. 基于GAN的图像水印去除器,效果堪比PS高手

    作者 | 李翔 转载自视说AI(ID:techtalkai) 简介:李翔,国内某互联网大厂AI民工,前携程酒店图像技术负责人,计算机视觉和深度学习重度爱好者,在ICCV和CVPR等会议上发表论文十余篇 ...

最新文章

  1. PHP如何把三张图片均匀分布,怎么把一张图片分成9张
  2. php yii composer下载,composer的安装和下载yii
  3. 要你命3000-List29
  4. windows消息定义
  5. webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
  6. Educational Codeforces Round 30 A[水题/数组排序]
  7. linux vim 单引号,单引号和双引号的区别、linux快捷键、zip压缩、lrzsz、vim常见问题...
  8. 什么是E-MapReduce
  9. 与神经网络相比,你对P图一无所知
  10. 10-2 使用Channel等待任务结束
  11. 怎样加入社区项目Karbor的Review?
  12. Julia: wsl ubuntu下安装、vscode及配置profile错误补正
  13. 【JAVA面试题整理】框架之Shiro
  14. UG模具设计从入门到精通
  15. 蓝绿黄车牌识别(附Python代码)
  16. 分布式锁?我一手synchronized 什么高并发,什么秒杀通通拿下(狗头)
  17. 用友U8案例教程库存管理前台操作
  18. python之利用Pygal+2010年世界人口=绘制世界地图
  19. 19个极度冷门发大财职业
  20. 【保姆级教程】彻底卸载Anaconda

热门文章

  1. 【最全解析】1050 螺旋矩阵 (25分)
  2. LeetCode题库第888题 公平的糖果棒交换
  3. lr分析器的设计与实现实验报告_《计算机导论》课程实验报告(一维数组)
  4. java用循环给map里面存值_Java中如何遍历Map对象的4种方法
  5. 查看某个方法在哪里被调用_一篇文章带你查看并处理Pandas数据
  6. java卡片布局例子_Java编程使用卡片布局管理器示例【基于swing组件】
  7. python3.5安装pip_pip和pip3 – 都指向python3.5?
  8. 合泰单片机数码管c语言,合泰单片机定时器数码管显示
  9. linux nginx 安装_艾编程基础教程:Linux 环境下 Nginx 安装
  10. android 获取位置数据库,尝试从webview获取位置时,Android“SQLite数据库无法从/CachedGeoposition.db加载”错误...