title: 图片添加图片水印和文字水印 tags: 图片处理,水印,图片水印,文字水印 date: 2018-10-29 20:15:10 grammar_cjkRuby: true

前言:最近需要对图片添加文字水印和图片水印,而且要根据原图片不同的大小,打上不同的大小的水印和文字,保证用户在视觉上看到的水印的大小是一致的。

话不多说,上代码,先上处理图片的代码

/*** @author: Aubergine* @date: 2018/10/28 11:57* @param srcImage 原图片的地址* @param pressImg 水印图片* @param pressText 水印文字* @param color 字体的颜色* @param font 字体的大小* @param alpha 模糊度* @return*/public BufferedImage pressText(File srcImage, Image pressImg, String pressText, Color color, Font font, float alpha) {final BufferedImage destImage = ImageUtil.read(srcImage);final Graphics2D gf = destImage.createGraphics();// 抗锯齿gf.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);gf.setColor(color);gf.setFont(font);// 透明度gf.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));// 在指定坐标绘制水印文字FontMetrics metrics = gf.getFontMetrics(font);int textLength = metrics.stringWidth(pressText);int textHeight = metrics.getAscent() - metrics.getLeading() - metrics.getDescent();gf.drawString(pressText, destImage.getWidth() - textLength, destImage.getHeight() - (textHeight / 2));gf.dispose();int width = destImage.getWidth((ImageObserver) null);int height = destImage.getHeight((ImageObserver) null);BufferedImage destImage2 = new BufferedImage(width, height, 1);Graphics2D g = destImage2.createGraphics();g.drawImage(destImage, 0, 0, width, height, (ImageObserver) null);int pressImgWidth = pressImg.getWidth((ImageObserver) null);int pressImgHeight = pressImg.getHeight((ImageObserver) null);int x = (width - pressImgWidth) - textLength - 5;int y = (height - pressImgHeight);g.setComposite(AlphaComposite.getInstance(10, alpha));// 给图片打上图片水印g.drawImage(pressImg, x, y, pressImgWidth, pressImgHeight, (ImageObserver) null);g.dispose();return destImage2;}
复制代码

调用的时候这样用

// 原图尺寸 3800*2850
ImageUtil.write(pressText(cn.hutool.core.io.FileUtil.file("C:\\Users\\Administrator\\Desktop\\1-3800-2850.jpg"),ImageUtil.read(new File("C:\\Users\\Administrator\\Desktop\\newlog\\116_116.png")),"@版权版权", Color.WHITE,new Font("微软雅黑", Font.BOLD, 86),1f), cn.hutool.core.io.FileUtil.file("C:\\Users\\Administrator\\Desktop\\1-3800-2850-r.jpg"));
// 原图尺寸是 1500*760
ImageUtil.write(pressText(FileUtil.file("C:\\Users\\Administrator\\Desktop\\1-1500-760.jpg"),ImageUtil.read(new File("C:\\Users\\Administrator\\Desktop\\newlog\\58_58.png")),"@版权版权", Color.WHITE,new Font("微软雅黑", Font.BOLD, 42),1f), cn.hutool.core.io.FileUtil.file("C:\\Users\\Administrator\\Desktop\\1-1500-760-r.jpg"));复制代码

PS:推荐一个比较好的JAVA工具包hutool,里面有很多的小工具,在开发的过程中使用很方便。

3800*2850原图
3800*2850水印图片
1500*760原图
1500*760效果图

图片添加图片水印和文字水印相关推荐

  1. 网页怎么在图片上添加文字_教你同时将图片水印和文字水印添加到视频画面

    随着剪辑软件的层出不穷,现在会制作创意视频的人越来越多.今天小编给大家分享一款剪辑软件--视频剪辑高手,以同时给视频添加图片水印和文字水印的效果为例,教大家如何操作. 编辑文字水印命令 勾选视频剪辑高 ...

  2. java 批量为图片添加图标水印和文字水印

    需求,给指定目录下面以.jpg结尾的文件,添加图标水印和文字水印 文章目录 一.基础版本 二.升级版本 三.依赖 一.基础版本 package com.gblfy.util;import com.su ...

  3. 利用iTextSharp组件给PDF文档添加图片水印,文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为:   usingSy ...

  4. java水印_Java实现给图片添加图片水印,文字水印及马赛克的方法示例

    本文实例讲述了Java实现给图片添加图片水印,文字水印及马赛克的方法.分享给大家供大家参考,具体如下: 可以在eclipse中新建个Utils类,把以下代码复制进去直接使用,以下方法实现单个或多个水印 ...

  5. 利用ffmpeg实现添加图片水印和文字水印,添加多个水印。代码和命令实现及中文水印乱码

    ffmpeg中文水印乱码两种原因 1.字符编码格式原因,中文必须是utf8编码格式的(我遇到的问题,在vs2013上写的中文,已做编码格式转码,放到centos7.2上编译运行也会出现中文乱码的问题, ...

  6. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

    javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...

  7. java为word添加水印,图片水印和文字水印

    java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...

  8. Java添加水印(图片水印,文字水印)

    第一种是添加文字水印: import java.awt.*; import java.awt.image.*; import java.io.*; import javax.swing.*; impo ...

  9. java swt课程设计_Java-SWT怎么做图片水印和文字水印?

    Java添加水印 图片水印 文字水印 水印的处理...以下有两种方式: 第一种是添加文字水印: 第二种是添加图片水印: 现在附上代码 2种的源码 package com. yjf.image; imp ...

最新文章

  1. SASE — Overview
  2. python【数据结构与算法】选数问题(指定值求和——递归)
  3. UNIX再学习 -- exit 和 wait 系列函数
  4. linux dump_stack
  5. c语言机考答案,全国计算机等级考试C语言上机试题题库(内附答案)
  6. 使用谷歌语音识别打造语音管家HiVoice
  7. tp-03 模板显示
  8. c语言课后作业答案第五版第4章,《C语言程序设计》课后习题答案(第四章)
  9. Linux的Vi命令详解
  10. PCkit3.5烧写器直接上手使用方法
  11. win10开机自动拨号上网
  12. 收藏一个快要消亡的技术古董
  13. JDK1.8下载与安装(完整图文教程含安装包)
  14. 基于python下django框架 实现校园失物招领系统详细设计
  15. Java内功设计模式 part2
  16. 201571030337/201571030327——《小学生四则运算》结对项目报告
  17. java高频面试题(2023最新)
  18. 教辅小程序之微课页面Demo
  19. 春招已至,大四学生如何撰写一份面试官愿意看的简历
  20. 04DeepLab-01论文背景、研究成果及意义

热门文章

  1. 数据结构-线性表之循环队列
  2. qt 5.0中HeaderView的setResiziMode无法使用的问题
  3. Shell 判断数是否为某数的倍数
  4. 宝塔面板数据库未授权访问(端口:888)
  5. python2/3 模块gmpy2在linux下安装
  6. spring 3.x 学习笔记_spring mvc、spring jdbc 实现网站的登录注册功能
  7. Mysql 学习之 SQL的执行顺序
  8. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘
  9. css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
  10. Recovering deleted Records