java实现图片添加水印并返回base64
时间: 2023-11-15 19:41:46 浏览: 87
你可以使用 Java 中的 `javax.imageio.ImageIO` 和 `java.awt.Graphics2D` 类来实现图片添加水印的功能,并将结果转换为 Base64 格式返回。以下是一个示例代码:
```java
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
public class WatermarkUtil {
public static String addWatermark(InputStream imageStream, String watermarkText) throws IOException {
// 读取输入流中的图片
BufferedImage image = ImageIO.read(imageStream);
// 创建一个新的 BufferedImage,并使用原始图片的宽度、高度和类型
BufferedImage watermarkedImage = new BufferedImage(
image.getWidth(), image.getHeight(), image.getType());
// 创建 Graphics2D 对象,用于在新图片上绘制水印
Graphics2D g2d = watermarkedImage.createGraphics();
// 在新图片上绘制原始图片
g2d.drawImage(image, 0, 0, null);
// 设置水印的字体、大小和颜色
Font font = new Font("Arial", Font.BOLD, 36);
g2d.setFont(font);
g2d.setColor(Color.RED);
// 计算水印文本的坐标,居中显示在图片上
FontMetrics fontMetrics = g2d.getFontMetrics();
int x = (image.getWidth() - fontMetrics.stringWidth(watermarkText)) / 2;
int y = image.getHeight() / 2;
// 绘制水印文本
g2d.drawString(watermarkText, x, y);
// 释放资源
g2d.dispose();
// 将水印图片转换为 Base64 字符串
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(watermarkedImage, "png", outputStream);
byte[] imageBytes = outputStream.toByteArray();
String base64Image = Base64.getEncoder().encodeToString(imageBytes);
return base64Image;
}
}
```
你可以调用 `addWatermark` 方法,传入原始图片的输入流和水印文本,它将返回添加水印后的图片的 Base64 字符串。
请注意,上述代码假设输入的图片格式为 PNG,并使用了默认的字体、大小、颜色等设置。你可以根据实际需求进行修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)