Java 图片添加水印效果
2024-09-22 00:38:33
package com.xiaowu.drawwater.demo; import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream; import javax.imageio.ImageIO;
import javax.swing.ImageIcon; /**
* 在原图片的基础之上添加水印效果
*
*
*
* @author WQ
*
*/
public class ImageMarkLogoByIcon { /**
* @param args
*/
public static void main(String[] args) {
String srcImgPath = "D:/Test123/car.png";
String iconPath = "D:/Test123/deal.png";
String targerPath = "D:/Test123/img_mark_icon.jpg";
String targerPath2 = "D:/Test123/img_mark_icon_rotate.jpg";
// 给图片添加水印
ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath);
// 给图片添加水印,水印旋转-45
ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2,
-45); } /**
* 给图片添加水印
* @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.4f; // 透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha)); // 表示水印图片的位置
g.drawImage(img, 15, 30, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(targerPath); // 生成图片
ImageIO.write(buffImg, "JPG", os); System.out.println("图片完成添加Icon印章。。。。。。");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
效果图:
最新文章
- 浏览器桌面通知--Notification
- visual foxpro命令
- 符号(void *)何解?符号(void **)又何解??
- APP测试流程(个人整理)
- JAVA多线程经典范列:生产者与消费者
- [转]给C++初学者的50个忠告
- Directadmin清空所有Tickets命令
- Linux定时运行与开机运行任务
- (C)学生成绩管理系统
- Delphi 函数指针(三大好处:灵活,委托的本质,回调机制),还可把函数指针当参数传入
- nand驱动移植
- Linux学习——shell编程之环境变量配置文件
- Dynamics CRM 安装Microsoft Dynamics CRM Reporting Extensions
- 51nod1363 最小公倍数之和
- Angular2入门:TypeScript的类 - 参数属性:定义和初始化类成员
- 十大经典排序算法的python实现
- java 面向对象基本知识
- 关于TerraBuilder的扩展开发
- ClassicFTP for Mac(FTP 客户端)破解版安装
- java基本知识归集