java图片中加入当前时间

java需求:将当前时间 加入到获取的图片流中,然后能在图片上打印出来。
目前:能够获取到图片流,然后将图片存到minio中,然后获取图片url展示出来。
期望:在获取到图片流后,存入minio之前,将当前时间加入到图片中(或者图片流中)

就是图片加日期水印嘛
https://blog.csdn.net/qq_26383975/article/details/125996277

该回答引用ChatGPT
您可以通过Java中的ImageIO类读取图片文件,并将其转换为BufferedImage对象。然后,您可以使用Graphics2D对象在BufferedImage上绘制当前时间。最后,将更新后的BufferedImage写回到输出流中,以便将其上传到Minio。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import javax.imageio.ImageIO;

public class ImageUtils {
    public static byte[] addTimestampToImage(byte[] imageData) throws IOException {
        // Load the image data into a BufferedImage
        BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageData));
        
        // Create a Graphics2D object and set the font and color
        Graphics2D g2d = image.createGraphics();
        Font font = new Font("Arial", Font.BOLD, 16);
        g2d.setFont(font);
        g2d.setColor(Color.BLACK);
        
        // Get the current time and format it
        LocalDateTime currentTime = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedTime = currentTime.format(formatter);
        
        // Draw the timestamp on the image
        g2d.drawString(formattedTime, 10, 20);
        
        // Write the updated BufferedImage to a ByteArrayOutputStream
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "png", outputStream);
        
        // Return the image data as a byte array
        return outputStream.toByteArray();
    }
}


在调用Minio API上传之前,您可以使用此方法将当前时间添加到图片流中:


byte[] imageData = // 获取图片流
byte[] updatedImageData = ImageUtils.addTimestampToImage(imageData);
// 现在,updatedImageData包含了带有时间戳的图片数据

你是说图片加时间水印时间这个需求吗?