酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

java 给图片添加文字水印时根据图片大小调整字体大小

在Java中,给图片添加文字水印并根据图片大小动态调整字体大小,可以通过Java的AWT和Swing库中的类如BufferedImage、Graphics2D以及FontMetrics来实现。以下是一个简单的示例: ```java import javax.imageio.ImageIO; import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class Watermark { public static void addWatermark(String srcPath, String destPath, String watermarkText) throws IOException { // 读取原图片 BufferedImage sourceImage = ImageIO.read(new File(srcPath)); int width = sourceImage.getWidth(); int height = sourceImage.getHeight(); // 创建一个新的缓冲图像用于添加水印 BufferedImage destinationImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = destinationImage.createGraphics(); // 设置抗锯齿 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 设置颜色和字体 Font font = new Font("Arial", Font.BOLD, calculateFontSize(width, height)); g2d.setColor(Color.white); // 获取字体metrics,用于计算文本的宽度和高度 FontMetrics metrics = g2d.getFontMetrics(font); Rectangle2D rect = metrics.getStringBounds(watermarkText, g2d); // 计算水印的位置 int x = (int) ((width - rect.getWidth()) / 2); int y = (int) ((height - rect.getHeight()) / 2 + rect.getY()); // 在图片上绘制水印文字 g2d.setFont(font); g2d.drawString(watermarkText, x, y); // 将修改后的图像写出到文件 ImageIO.write(destinationImage, "png", new File(destPath)); g2d.dispose(); } private static int calculateFontSize(int width, int height) { // 这里可以根据实际需求定义字体大小的计算方式,比如根据图片尺寸按比例缩放 return Math.min(width, height) / 20; // 假设我们设定为图片最小边长度的1/20作为字体大小 } public static void main(String[] args) throws IOException { addWatermark("source.png", "destination.png", "Your Watermark Text"); } } ``` 上述代码中,`calculateFontSize`方法是关键,它根据图片的宽度和高度来计算合适的字体大小。你可以根据实际情况调整这个函数的逻辑,以满足你的需求。 [2024-02-27 13:44:46 | AI写代码神器 | 568点数解答]

相关提问