原始图:

水印原始模板:

添加水印后的效果图

package com.sjaco.hy.api.test;import java.awt.image.BufferedImage;
import java.io.File;public class Test {public static void main(String[] args) {Data  data=new Data();data.setOriginalFilePath("C:\\Users\\18710\\Desktop\\2.png");//模板地址data.setNewFilePath("C:\\Users\\18710\\Desktop\\100.png");//输出地址data.setTitle("110kXX线路光缆巡检项目");data.setTime("2020.06.01 15:26");data.setWeather("阴 31");data.setAddress("红河哈尼族黎族自治州.朝阳苑(朝阳路)");data.setAltitude("1304.5米");data.setLongitude("103.3882474");data.setLatitude("23.35864044");aADDatermark("C:\\Users\\18710\\Desktop\\1.png","C:\\Users\\18710\\Desktop\\sc.png",data);}/*** 给图片添加水印**** @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径*/private  static void  aADDatermark( String srcImgPath, String targerPath,Data  data){//添加文字后的水印地址String  path=   generateWatermark(data);WaterMarkUtils.markImageByIcon(path, srcImgPath, targerPath);File file = new File(path);file.delete();}/****   给图片添加文字** @param data  参数* @return  添加文字后的图片路径*/public static String generateWatermark(Data data) {FileUtil tt = new FileUtil();BufferedImage d = tt.loadImageLocal(data.getOriginalFilePath());tt.modifyImage(d, data.getTitle(), 100, 50);tt.modifyImage(d, data.getTime(), 100, 100);tt.modifyImage(d, data.getWeather(), 100, 135);String  address=data.getAddress();if (address.length()>=15){tt.modifyImage(d, address.substring(0,15), 100, 170);tt.modifyImage(d, address.substring(15), 100, 200);}else {tt.modifyImage(d, address, 100, 170);}tt.modifyImage(d, data.getAltitude(), 100, 245);tt.modifyImage(d, data.getLongitude(), 100, 280);tt.modifyImage(d, data.getLatitude(), 100, 320);tt.writeImageLocal(data.getNewFilePath(), d);return  data.getNewFilePath();}}
package com.sjaco.hy.api.test;public class Data {/*** 原始文件模板*/private String  originalFilePath;/*** 添加文字后的文件地址*/private String  newFilePath;/*** 标题*/private String   title;/*** 时间*/private String   time;/*** 天气*/private String  weather;/*** 地址*/private String address;/*** 海拔*/private String altitude;/*** 经度*/private String longitude;/*** 纬度*/private String latitude;public String getOriginalFilePath() {return originalFilePath;}public void setOriginalFilePath(String originalFilePath) {this.originalFilePath = originalFilePath;}public String getNewFilePath() {return newFilePath;}public void setNewFilePath(String newFilePath) {this.newFilePath = newFilePath;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public String getWeather() {return weather;}public void setWeather(String weather) {this.weather = weather;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getAltitude() {return altitude;}public void setAltitude(String altitude) {this.altitude = altitude;}public String getLongitude() {return longitude;}public void setLongitude(String longitude) {this.longitude = longitude;}public String getLatitude() {return latitude;}public void setLatitude(String latitude) {this.latitude = latitude;}
}
package com.sjaco.hy.api.test;import lombok.extern.slf4j.Slf4j;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
@Slf4j
public class FileUtil {private Font       font     = new Font("黑体", Font.BOLD, 25); // 添加字体的属性设置private Graphics2D g        = null;/*** 修改图片,返回修改后的图片缓冲区(只输出一行文本)*/public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) {try {int w = img.getWidth();int h = img.getHeight();g = img.createGraphics();g.setBackground(Color.WHITE);g.setColor(new Color(120, 120, 110));//设置字体颜色if (this.font != null)g.setFont(this.font);if (content != null) {// createGraphics().translate(w, h );g.translate(0, 0);//   g.rotate(8 * Math.PI / 180);  //旋转字体g.drawString(content.toString(), x, y);}g.dispose();} catch (Exception e) {log.info(e.getMessage());}return img;}/*** 生成新图片到本地*/public void writeImageLocal(String newImage, BufferedImage img) {if (newImage != null && img != null) {try {File outputfile = new File(newImage);ImageIO.write(img, "png", outputfile);} catch (IOException e) {log.info(e.getMessage());}}}/*** 导入本地图片到缓冲区*/public BufferedImage loadImageLocal(String imgName) {try {return ImageIO.read(new File(imgName));} catch (IOException e) {log.info(e.getMessage());}return null;}public static void main(String[] args) {FileUtil tt = new FileUtil();BufferedImage d = tt.loadImageLocal("C:\\Users\\18710\\Desktop\\2.png");tt.modifyImage(d, "110kXX线路光缆巡检项目", 100, 50);tt.modifyImage(d, "2020.06.01 15:26", 100, 100);tt.modifyImage(d, "阴 31", 100, 135);tt.modifyImage(d, "红河哈尼族黎族自治州.朝阳苑(", 100, 170);tt.modifyImage(d, "朝阳路)", 100, 200);tt.modifyImage(d, "1304.5米", 100, 245);tt.modifyImage(d, "103.3882474", 100, 280);tt.modifyImage(d, "23.35864044", 100, 320);tt.writeImageLocal("C:\\Users\\18710\\Desktop\\100.png", d);log.info("success");}
}
package com.sjaco.hy.api.test;
import lombok.extern.slf4j.Slf4j;import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.*;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
@Slf4j
public class WaterMarkUtils {private static int  gethigth(String s) throws Exception{File picture=new File(s);BufferedImage sourceImg=ImageIO.read(new FileInputStream(picture));log.info("宽"+sourceImg.getWidth());return   sourceImg.getHeight();}/*** 给图片添加水印** @param iconPath*            水印图片路径* @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径*/public static void markImageByIcon(String iconPath, String srcImgPath, String targerPath) {markImageByIcon(iconPath, srcImgPath, targerPath, null);}/*** 给图片添加水印、可设置水印图片旋转角度** @param iconPath*            水印图片路径* @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径* @param degree*            水印图片旋转角度*/public static void markImageByIcon(String iconPath, String srcImgPath, String targerPath, Integer degree) {OutputStream os = null;try {Image srcImg = ImageIO.read(new File(srcImgPath));BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null),BufferedImage.TYPE_INT_RGB);// 得到画笔对象// Graphics g= buffImg.getGraphics();Graphics2D g = buffImg.createGraphics();// 设置对线段的锯齿状边缘处理g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), Image.SCALE_SMOOTH), 0,0, 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 img = imgIcon.getImage();float alpha = 0.8f; // 透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));int yheight=gethigth(srcImgPath);//原图片高度int sheight=gethigth(iconPath);//水印图片高度// 表示水印图片的位置g.drawImage(img, 20, yheight-sheight-5, null);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));g.dispose();os = new FileOutputStream(targerPath);// 生成图片ImageIO.write(buffImg, "JPG", os);log.info("图片完成添加水印完成。。。。。。");} catch (Exception e) {e.printStackTrace();} finally {try {if (null != os)os.close();} catch (Exception e) {e.printStackTrace();}}}/*** @param args*/public static void main(String[] args) throws Exception{String srcImgPath = "C:\\Users\\18710\\Desktop\\1.png";String iconPath = "C:\\Users\\18710\\Desktop\\2.png";String targerPath = "C:\\Users\\18710\\Desktop\\mubiao.png";//  String targerPath2 = "C:/Users/liqiang/Desktop/图片/qlq2.jpeg";gethigth(iconPath);// 给图片添加水印WaterMarkUtils.markImageByIcon(iconPath, srcImgPath, targerPath);}
}

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

  1. 如何将已有图片做成透明水印_如何批量给图片添加属于自己的全屏透明水印?其实方法很简单...

    原标题:如何批量给图片添加属于自己的全屏透明水印?其实方法很简单 今天我们来分享一个给图片批量添加全屏透明水印的小技巧,为什么要给图片添加全屏透明水印呢?就好比如说,我是做美食的,配图时候,做出来的劳 ...

  2. word 标题自动编号、按章节给图片设置题注、给图片添加对应的文字交叉引用

    论文标题自动编号.按章节给图片设置题注.给图片添加对应的文字交叉引用 1.准备环节及工作环境 2.多级列表 2.1 定义新的多级列表 2.2 修改标题格式 3.按章节给图片编号 3.1 插入题注 3. ...

  3. 图片添加边框和文字怎么弄?图片编辑在线教学

      大家平时在拍完照片后,会对它进行一些编辑处理吗?像我每次拍完照,都会对图片进行一些后期处理,有时也会给图片添加一些边框或者文字,美化图片并增加图片信息量.那你们平时都是怎么给图片加上边框和文字的呢 ...

  4. 怎样边下载宝贝图片边给图片添加自己的文字水印或图片水印

    今天小编要介绍一个比较常用的技巧,就是如何在下载商品图片时,给商品主图添加一些个性的水印或文字?一起来看看具体的操作步骤吧. 首先复制要抓取的商品链接地址 小编使用的下载图片工具(载图助手),打开进入 ...

  5. java图片框_用java语言, 如何实现为图片添加边框素材,就是把图片和边框素材(图片)结合?...

    展开全部 用FrontPage2002来做吧,你点点下面的连接:62616964757a686964616fe4b893e5b19e31333264636265 具体是: Web页面可用预定义模板来创 ...

  6. html图片添加阴影效果图,使用css给图片添加阴影入门篇

    一般我们可以使用背景图的方式给图片添加阴影,但对于不固定尺寸的图片如何实现呢? 我们可以采取"视觉欺骗大法"--定义渐变边框来实现 运行代码框 body {background:# ...

  7. php 给图片添加链接_【dreamweaver给图片添加链接】用dreamweaver 怎样给图片局部地区添加超链接?...

    dreamweaver给图片添加链接教程: 1.打开Dreamweaver.如果尚未打开一个现有文件或定义一个新站点并创建一个新HTML文件,请执行以下操作. 2.创建新的HTML文件时,Dreamw ...

  8. matlab给图片添加颜色条

    首先拖动图片至matlab命令行窗口,可以重新命名一下(命名为abb). 命令行输入"imshow(abb)",单击图片上方的"插入颜色栏",默认插入matla ...

  9. python给图片添加半透明背景文字

    原图: 效果图: from PIL import Image, ImageDraw, ImageFont''' pos x1,y1,x2,y2矩形坐标对角点 ''' def drawRect(img, ...

最新文章

  1. 数据加载很慢_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用
  2. github:已经提交并push后再次追加提交
  3. 教你11 周打造全能Python工程师!
  4. 关于java中BufferedReader的read()及readLine()方法的使用心得
  5. 【渝粤教育】国家开放大学2018年春季 8126-21T制药工程 参考试题
  6. abap oo 语法
  7. 使用conda创建环境以及出现包找不到解决方案
  8. Android之帮助文档
  9. SpringMVC form:form的一个错误(没有传到前台绑定类)
  10. 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)
  11. java虚拟机文件_JAVA虚拟机已经安装,但不知道在哪儿编译和运行程序。
  12. 【渝粤教育】国家开放大学2019年春季 45烹饪原料学(1) 参考试题
  13. jsp中9个内置对象与servlet对应关系及四个作用域
  14. arduino:废旧光驱DIY激光雕刻机(完善中……)
  15. 三点估算法_三点估算法、方差计算、完工概率计算的讨论
  16. vasp 计算杨氏弹性_高阶弹性常数计算的一点建议
  17. Learn OpenGL 笔记6.2 Gamma Correction(伽马校正)
  18. C语言知识点--define的替换列表为空是怎么回事?
  19. 对一些常见的HTML5特效进行整理和运行(有趣特效,烟花特效,爱心特效,炫酷特效)
  20. 1863: Dinner

热门文章

  1. 阿里云服务器安装mysql数据库
  2. 学习手扎20190313——dick操作(增删改查)
  3. 代码整洁之道(clean code)序
  4. 210学习日记(18)_ARM基础知识
  5. 私有云行业破局者 极空间家庭私有云Z4/Z2正式发布
  6. android bug unfortunately has stopped
  7. 腾讯开放平台提交app审核无法上传apk文件
  8. 腾讯开放平台相关内容
  9. VMware-虚拟机-Linux系统
  10. 手淘移动端适配的方案学习和相关思考