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包含了带有时间戳的图片数据
你是说图片加时间水印时间这个需求吗?