Обработка изображений в Java — водяные знаки на изображении

Опубликовано: 15 Сентября, 2022

Предпосылки:

  • Обработка изображений в 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) — расположение x, y определяет положение левого верхнего угла изображения. Параметр наблюдателя уведомляет приложение об обновлениях изображения, которое загружается асинхронно. Параметр наблюдателя не часто используется напрямую и не требуется для класса BufferedImage, поэтому обычно он равен нулю.

3. setFont(Font f) — этот метод находится в классе Font пакета awt, и конструктор принимает (FONT_TYPE, FONT_STYLE, FONT_SIZE) в качестве аргументов.

4. setColor(Color c) — этот метод находится в классе Color пакета awt, и конструктор принимает (R, G, B, A) в качестве аргументов.

5. drawString(String str, int x, int y) — класс Fond in Graphics принимает текст строки и координаты местоположения как 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.

Эта статья предоставлена Pratik Agarwal . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.