程序背景

在网络中的很多地方都有水印的存在,比如微信公众号上面的图片,微博,以及这个CSDN博客上面的图片……所以突发奇想,看看自己能否写一个可以给图片添加水印的工具类。

程序代码

package image;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.FileOutputStream;import javax.imageio.ImageIO;/*** @author 白芷* @Date 2017/03/12* @use 利用Java代码给图片加水印*/
public class WaterMarkUtils {/*** @param srcImgPath 源图片路径* @param tarImgPath 保存的图片路径* @param waterMarkContent 水印内容* @param markContentColor 水印颜色* @param font 水印字体*/public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent,Color markContentColor,Font font) {try {// 读取原图片信息File srcImgFile = new File(srcImgPath);//得到文件Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片int srcImgWidth = srcImg.getWidth(null);//获取图片的宽int srcImgHeight = srcImg.getHeight(null);//获取图片的高// 加水印BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);Graphics2D g = bufImg.createGraphics();g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);g.setColor(markContentColor); //根据图片的背景设置水印颜色g.setFont(font);              //设置字体//设置水印的坐标int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);  int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);  g.drawString(waterMarkContent, x, y);  //画出水印g.dispose();  // 输出图片  FileOutputStream outImgStream = new FileOutputStream(tarImgPath);  ImageIO.write(bufImg, "jpg", outImgStream);System.out.println("添加水印完成");  outImgStream.flush();  outImgStream.close();  } catch (Exception e) {// TODO: handle exception}}public int getWatermarkLength(String waterMarkContent, Graphics2D g) {  return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());  }  public static void main(String[] args) {Font font = new Font("微软雅黑", Font.PLAIN, 35);                     //水印字体String srcImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/s.jpg"; //源图片地址String tarImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/t.jpg"; //待存储的地址String waterMarkContent="图片来源:http://blog.csdn.net/zjq_1314520";  //水印内容Color color=new Color(255,255,255,128);                               //水印图片色彩以及透明度new WaterMarkUtils().addWaterMark(srcImgPath, tarImgPath, color, waterMarkContent,font);}
}

最后效果

用Java实现给图片添加文字水印相关推荐

  1. Java分享--给图片添加文字水印(文字可旋转)

    这篇文章主要介绍了Java实现给图片添加文字水印,文字水印的方法,涉及java针对图片的读取.水印添加设置等相关操作技巧,需要的朋友可以参考下 . 很多时候项目中的图片需要一定的版权,就是人家拿出去用 ...

  2. JAVA 给图片添加文字水印

    水印操作有很多,例如:给图片添加文字.图片水印,给pdf文件添加水印,给文件加盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印 ...

  3. Java给图片添加文字水印

    闲着没事,研究了下图片水印的事儿,图片水印虽然恶心,而且大大的影响了图片的美观,试想一下,一张美女的性感写真照,下方来了个大大的水印"XXXX所有",看着那猥琐的文字水印,是不是很 ...

  4. android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件

    Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;import android.graphics.Bitmap;import android.gr ...

  5. springboot——图片添加文字水印

    springBoot 给图片添加文字水印 项目要求给每个考生制作证书.这里我们有每个公司需要的背景图片模板,而我现在要做的就是把每个考生的考试信息和个人信息,以水印的形式添加到图片的指定位置.(现在这 ...

  6. Springboot中给图片添加文字水印

    Springboot中给图片添加文字水印 工作中遇到给图片添加文字水印的需求,记录下来方便之后查阅 需求内容: 给一张图片添加指定文字水印,使一张图片上有多个水印内容,并且设定一个水印开关,可指定是否 ...

  7. Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)

    想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能. 1,效果图如下: (在图片左上角和右下角都添加了文字.) 2,为方便使用,我们通过扩展UIImage类来实现添加水印功能 ( ...

  8. php生成背景并加字,PHP给图片添加文字水印实例

    PHP给图片添加文字水印实例,支持中文文字水印,是否覆盖原图,自定义设置水印背景色.文字颜色.字体等. 水印类water.class.php var $Path = "./"; / ...

  9. 二、VB.NET实现给图片添加文字水印

    VB.NET实现给图片添加文字水印 通过vb.net给选定的图片添加文字水印,添加的文字从文本文档中获取,可以一次给相同的图片添加不同的文字水印,并以添加的文字命名图片: Imports System ...

最新文章

  1. C语言中positive用法,sprintf - C语言库函数
  2. vivo手机解锁工具_屏幕指纹优势凸显,vivo持续研发致力打造全屏指纹解锁
  3. kernel 3.10内核源码分析--内核栈及堆栈切换
  4. 阴雨连绵潮湿加剧 车辆防潮提升保值
  5. centos部署时间服务器
  6. Delphi窗口属性
  7. 2005服务器文件夹网页设设置,设置VSS2005使支持通过Internet访问
  8. jmeter性能测试实战_Jmeter接口测试实战篇:10分钟学会Jmeter的用法
  9. Go语言grpc proto生成pb文件
  10. 都说IT行业有前景,请问凭什么?
  11. 十大经典系统架构设计面试题
  12. macbook新建html文件,New File Creation: 给 Mac 加上“新建文件菜单”
  13. 域名注册条件有哪些?需要提交哪些材料?
  14. 2021年中国债券行业发展趋势分析:发行规模、交易量增长,未来发展潜力较大[图]
  15. C语言杨辉三角和“日本某地谋杀案”习题讲解
  16. 岁月的剪影【七月My way】
  17. pde与波长 sipm 关系_SiPM应用于LiDAR:为何要先解决延时脉冲,而不是先提升PDE?...
  18. 基于Java技术的大型网站架构设计方案
  19. 计算机网络工程方向,计算机网络专业发展方向
  20. DSP_基于TMS320F28335和CCS7.2的编程入门

热门文章

  1. 人工智能产业链,是时候梳理一下了!
  2. Python + Django 入门级开发手顺
  3. 移动硬盘损坏如何恢复数据
  4. 安卓实现饿了么点餐界面效果(京东类别左右列表联动)
  5. 浪潮财务软件 系统表预检查: 对象 ID X。无法使用闩锁类型 SH 读取并闩锁页 。由于不可修复的错误,CHECK 语句已终止。
  6. 如何使用注册表在Win10中调整屏幕亮度
  7. 低成本快速开发 LoRa 终端:从 1 到 10000
  8. Delphi10.4使用FireDAC数据访问组件开发数据库软件学习开发教程(1)
  9. 【JavaSE】Java9Java10Java11新特性(687~717)
  10. Android 音视频编解码 MediaCodec