一个图片MultipartFile 和一个水印 MultipartFile 合并成一张图片
时间: 2023-11-16 21:00:13 浏览: 85
可以使用Java的ImageIO类和Graphics2D类来实现将两张图片合并成一张图片的操作。具体步骤如下:
1. 首先,使用MultipartFile的getInputStream()方法获取两张图片的输入流。
2. 使用ImageIO类的read()方法将两张图片的输入流转换为BufferedImage对象。
3. 创建一个新的BufferedImage对象,它的宽度和高度分别为两张图片的宽度和高度之和。
4. 获取Graphics2D对象,使用drawImage()方法将两张图片绘制到新的BufferedImage对象上。
5. 使用ImageIO类的write()方法将新的BufferedImage对象输出为文件。
下面是示例代码:
```java
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class ImageUtils {
public static void mergeImages(MultipartFile image1, MultipartFile image2, String outputFilePath) throws IOException {
// 读取两张图片的输入流
InputStream inputStream1 = image1.getInputStream();
InputStream inputStream2 = image2.getInputStream();
// 将输入流转换为BufferedImage对象
BufferedImage bufferedImage1 = ImageIO.read(inputStream1);
BufferedImage bufferedImage2 = ImageIO.read(inputStream2);
// 计算新图片的宽度和高度
int width = bufferedImage1.getWidth() + bufferedImage2.getWidth();
int height = Math.max(bufferedImage1.getHeight(), bufferedImage2.getHeight());
// 创建新的BufferedImage对象
BufferedImage mergedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D对象
Graphics2D g2d = mergedImage.createGraphics();
// 绘制第一张图片
g2d.drawImage(bufferedImage1, 0, 0, null);
// 绘制第二张图片
g2d.drawImage(bufferedImage2, bufferedImage1.getWidth(), 0, null);
// 释放资源
g2d.dispose();
// 输出新图片
ImageIO.write(mergedImage, "jpg", new File(outputFilePath));
}
}
```
调用示例:
```java
MultipartFile image1 = ...;
MultipartFile image2 = ...;
String outputFilePath = "merged.jpg";
ImageUtils.mergeImages(image1, image2, outputFilePath);
```
阅读全文