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