Java中的图像处理——给图像加水印
先决条件:
- Java中的图像处理——读写
- Java中的图像处理——获取和设置像素
- Java中的图像处理——彩色图像到灰度图像的转换
- Java中的图像处理——彩色图像到负图像的转换
- Java中的图像处理——彩色到红绿蓝图像的转换
- Java中的图像处理——彩色图像到棕褐色图像的转换
- Java中的图像处理——创建随机像素图像
- Java中的图像处理——创建镜像
- Java中的图像处理——人脸检测
在这组中,我们将生成一个水印并将其应用于输入图像。为了生成文本并将其应用到图像中,我们将使用Java.awt.Graphics包。使用Java.awt.Color和Java.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);
}
}
}
输出:
Note: This code will not run on online ide since it requires an image in the drive.