📌  相关文章
📜  Java中的图像处理——给图像加水印

📅  最后修改于: 2022-05-13 01:55:35.197000             🧑  作者: Mango

Java中的图像处理——给图像加水印

先决条件:

  • Java中的图像处理——读写
  • Java中的图像处理——获取和设置像素
  • Java中的图像处理——彩色图像到灰度图像的转换
  • Java中的图像处理——彩色图像到负图像的转换
  • Java中的图像处理——彩色到红绿蓝图像的转换
  • Java中的图像处理——彩色图像到棕褐色图像的转换
  • Java中的图像处理——创建随机像素图像
  • Java中的图像处理——创建镜像
  • Java中的图像处理——人脸检测

在这组中,我们将生成一个水印并将其应用于输入图像。为了生成文本并将其应用到图像中,我们将使用Java.awt.Graphics包。使用Java.awt.ColorJava.awt.Font类应用文本的字体和颜色。

给图像加水印的方法:

1. getGraphics() -该方法在 BufferedImage 类中,它从图像文件中返回一个 2DGraphics 对象。

2. drawImage(Image img, int x, int y, ImageObserver observer) – x,y 位置指定图像左上角的位置。观察者参数通知应用程序更新异步加载的图像。观察者参数不经常直接使用,BufferedImage类不需要,所以通常为null。

3. setFont(Font f) -这个方法在awt包的Font类中,构造函数接受(FONT_TYPE, FONT_STYLE, FONT_SIZE)作为参数。

4. setColor(Color c) -这个方法在awt包的Color类中,构造函数接受(R, G, B, A)作为参数。

5. drawString(String str, int x, int y) – Graphics 类中的 Fond 接受字符串文本,位置坐标为 x 和 y 作为参数。

执行:

Java
// Java code for watermarking an image
  
// For setting color of the watermark text
import java.awt.Color;
  
// For setting font of the watermark text
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
  
public class WaterMark {
    public static void main(String[] args)
    {
        BufferedImage img = null;
        File f = null;
  
        // Read image
        try {
            f = new File(
                "C:/Users/hp/Desktop/Image Processing in Java/gfg-logo.png");
            img = ImageIO.read(f);
        }
        catch (IOException e) {
            System.out.println(e);
        }
  
        // create BufferedImage object of same width and
        // height as of input image
        BufferedImage temp = new BufferedImage(
            img.getWidth(), img.getHeight(),
            BufferedImage.TYPE_INT_RGB);
  
        // Create graphics object and add original
        // image to it
        Graphics graphics = temp.getGraphics();
        graphics.drawImage(img, 0, 0, null);
  
        // Set font for the watermark text
        graphics.setFont(new Font("Arial", Font.PLAIN, 80));
        graphics.setColor(new Color(255, 0, 0, 40));
  
        // Setting watermark text
        String watermark = "WaterMark generated";
  
        // Add the watermark text at (width/5, height/3)
        // location
        graphics.drawString(watermark, img.getWidth() / 5,
                            img.getHeight() / 3);
  
        // releases any system resources that it is using
        graphics.dispose();
  
        f = new File(
            "C:/Users/hp/Desktop/Image Processing in Java/GFG.png");
        try {
            ImageIO.write(temp, "png", f);
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }
}


输出: