Java实现图片加水印代码示例
77 浏览量
更新于2024-08-31
收藏 43KB PDF 举报
"这篇Java代码示例展示了如何在图片上添加水印,主要适用于开发者学习和参考。水印可以是图像或文字,提供了两种不同处理方式:一种是直接添加,另一种是旋转添加。"
在Java编程中,为图片添加水印是一项常见的任务,尤其在处理网站或应用中的版权保护时。以下的Java代码片段详细解释了如何通过编程实现这一功能:
首先,我们需要导入必要的包,包括`java.awt`和`java.awt.image`,这些包提供了图形处理和图像操作的类。代码中还引入了`javax.swing.ImageIcon`,虽然在这个特定示例中没有直接使用,但在处理图像时,尤其是加载图标时,它可能会派上用场。
```java
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.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
```
接下来,定义一个名为`ImageMarkLogoByIcon`的公共类,其中包含了一个`main`方法,这是程序的入口点。代码中还引用了一个名为`Michael`的作者,这通常表示代码由这个人编写。
```java
public class ImageMarkLogoByIcon {
public static void main(String[] args) {
// 图片源路径、水印图标路径及目标图片路径
String srcImgPath = "d:/test/michael/myblog_01.png";
String iconPath = "d:/test/michael/blog_logo.png";
String targerPath = "d:/test/michael/img_mark_icon.jpg";
String targerPath2 = "d:/test/michael/img_mark_icon_rotate.jpg";
}
}
```
在`main`方法中,定义了四个字符串变量,分别代表原始图片路径、水印图片路径以及两个目标图片路径。这两个目标图片路径用于存储添加水印后的图片,一个是正常添加,另一个是添加并旋转水印。
接下来,实际的水印添加过程是在`main`方法内部进行的,这里省略了具体实现。通常,我们首先会加载源图片和水印图片,然后创建一个新的`BufferedImage`对象来保存结果。接着,使用`Graphics2D`对象在源图片上绘制水印,调整其透明度、位置和旋转角度。最后,将结果写入到目标文件中。
```java
// 加载图片和水印
Image srcImg = ImageIO.read(new File(srcImgPath));
Image icon = ImageIO.read(new File(iconPath));
// 创建BufferedImage对象
BufferedImage targetImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 创建Graphics2D对象并设置属性
Graphics2D g = targetImg.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f)); // 设置水印透明度
// 绘制水印
g.drawImage(icon, x, y, null); // 添加水印
g.rotate(Math.toRadians(angle), centerX, centerY); // 旋转水印
// 清理并保存结果
g.dispose();
ImageIO.write(targetImg, "jpg", new File(targerPath));
```
这段代码的核心在于`Graphics2D`对象,它可以用来绘制图形、文本和图像。`setRenderingHint`方法用于提高图像的渲染质量,`setComposite`方法设置透明度,`drawImage`方法则负责在源图片上绘制水印。如果需要旋转水印,可以通过`rotate`方法实现。
通过这种方式,我们可以根据需要灵活地在图片上添加水印,无论是文字还是图像,都能轻松完成。这个示例对于任何想在Java项目中处理图像添加水印的开发者来说都是一个很好的起点。
2020-09-05 上传
2013-03-12 上传
2020-09-03 上传
2014-02-27 上传
2022-06-06 上传
2021-10-13 上传
155 浏览量
2010-01-31 上传
2017-02-14 上传
weixin_38748718
- 粉丝: 6
- 资源: 912