Heim > Java > javaLernprogramm > So fügen Sie Textwasserzeichen und Bildwasserzeichenfunktionen in Java hinzu

So fügen Sie Textwasserzeichen und Bildwasserzeichenfunktionen in Java hinzu

王林
Freigeben: 2023-05-23 08:56:12
nach vorne
1786 Leute haben es durchsucht

    Wasserzeichen hinzufügen

    Der Hauptzweck des Hinzufügens von Wasserzeichen zu Bildern besteht darin, das Urheberrecht des Bildes zu schützen, um zu verhindern, dass Unbefugte das Bild verwenden oder verbreiten. Das Hinzufügen von Wasserzeichen zu Bildern ist eine gängige Bildverarbeitungstechnik. Sie können die Graphics2D-Klasse verwenden, die im Java JDK enthalten ist, um Wasserzeichen zu zeichnen. Sie können Bildwasserzeichen oder Textwasserzeichen hinzufügen.

    Die Java-Plattform bietet eine Java 2D-API-Klassenbibliothek zur Implementierung der 2D-Bildzeichnung. Die Software unterstützt mehrere Bild-, Schriftarten- und Farbverwaltungsformate und verfügt über viele erweiterte Funktionen wie Alpha-Blending, Tiefenpuffer und mehr.

    Einführung in die Java 2D-API

    1. Erstellen Sie ein Objekt zum Zeichnen von Grafiken.

    Verwenden Sie die Graphics2D-Klasse, um ein Objekt zum Zeichnen von Grafiken zu erstellen. Weitere Zeichenfunktionen können durch Erweitern des Graphics2D-Objekts, einer Unterklasse der Graphics-Klasse, erreicht werden.

    // 创建一个大小为 800x600 像素的空白图像
    BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_ARGB);
    // 递给 Graphics2D 对象以进行绘制操作
    Graphics2D g2d = image.createGraphics();
    Nach dem Login kopieren

    2. Zeichnen Sie grundlegende Grafiken

    Die Java 2D-API unterstützt das Zeichnen verschiedener grundlegender 2D-Grafiken wie Liniensegmente, Rechtecke, Ellipsen, Bögen usw.

    // 绘制一条线段
    g2d.drawLine(100, 100, 200, 200);
    // 绘制一个矩形
    g2d.drawRect(300, 100, 100, 50);
    // 绘制一个椭圆
    g2d.drawOval(500, 100, 100, 150);
    // 绘制一个弧形
    g2d.drawArc(100, 300, 100, 100, 0, 90);
    Nach dem Login kopieren

    3. Zeichnen Sie Text

    Sie können die verwenden Graphics2D-Objekt drawString()-Methode zum Zeichnen von Zeichenfolgentext auf dem Bild

    // 将字符串 "Hello, Java 2D!" 绘制在坐标 (200, 400) 处
    g2d.drawString("Hello, Java 2D!", 200, 400);
    Nach dem Login kopieren

    4. Zeichnen von Bildern

    Unterstützt das Laden und Zeichnen von Bildern in verschiedenen Formaten wie JPEG, PNG, GIF usw. Sie können die ImageIO-Klasse auch verwenden, um eine Bilddatei zu laden und sie mit der Methode drawImage() des Graphics2D-Objekts auf das Bild zu zeichnen.

    // 从指定的文件路径加载一张图片,并将其绘制在图像的左上角
    BufferedImage image = ImageIO.read(new File("image.jpg"));
    g2d.drawImage(image, 0, 0, null);
    Nach dem Login kopieren

    5. Zeichnungseigenschaften festlegen

    Mit der Set-Methode des Graphics2D-Objekts können Sie verschiedene Zeichnungseigenschaften wie Farbe, Schriftart, Linienbreite usw. festlegen.

    // 设置绘制颜色为红色
    g2d.setColor(Color.RED);
    // 设置字体为 Arial,大小为 24
    g2d.setFont(new Font("Arial", Font.PLAIN, 24));
    // 设置线宽为 3 像素
    g2d.setStroke(new BasicStroke(3));
    Nach dem Login kopieren

    Textwasserzeichen zeichnen

    Textwasserzeichen zum Bild hinzufügen Die Schritte sind wie folgt:

    • Verwenden Sie die ImageIO-Klasse, um das Bild zu laden, das mit einem Wasserzeichen versehen werden soll

    • Erstellen Sie ein benutzerdefiniertes Bildobjekt von BufferedImage und verwenden Sie das Graphics2D-Objekt. Zeichnen Sie das Originalbild auf das Objekt.

    • Erstellen Sie ein Schriftartobjekt und legen Sie Schriftart, Farbe, Transparenz und andere Eigenschaften fest.

    • Verwenden Sie die Methode drawString() des Graphics2D-Objekts, um die Zeichenfolge zu zeichnen, wo Das Wasserzeichen muss hinzugefügt werden.

    • Verwenden Sie die ImageIO-Klasse, um das geänderte Bild im angegebenen Verzeichnis zu speichern.

        public static void addWatermark(File input, File out, String text, int fontSize) {
            // 读取原图片
            BufferedImage image = null;
            try {
                image = ImageIO.read(input);
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 获取图片的宽度和高度
            int width = image.getWidth();
            int height = image.getHeight();
            // 创建一个图片缓存对象
            BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 获取图片的画笔
            Graphics2D g = newImage.createGraphics();
            // 将原图片绘制到缓存图片上
            g.drawImage(image, 0, 0, width, height, null);
            // 创建字体对象
            Font font = new Font("微软雅黑", Font.BOLD, fontSize);
            // 创建字体渲染上下文
            FontRenderContext frc = new FontRenderContext(null, true, true);
            // 计算字符串的宽度和高度
            Rectangle2D bounds = font.getStringBounds(text, frc);
            // 字符宽度
            int strWidth = (int) bounds.getWidth();
            // 字符高度
            int strHeight = (int) bounds.getHeight();
            // 设置水印的字体样式
            g.setFont(font);
            // 设置水印的颜色
            g.setColor(Color.red);
            // 设置水印的位置 根据需要再自行调整宽度、高度
            g.drawString(text, width - strWidth - 10, height - strHeight + 15);
            // 释放图形上下文使用的系统资源
            g.dispose();
            // 保存带水印的图片
            try {
                ImageIO.write(newImage, "png", out);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    Nach dem Login kopieren
        public static void main(String[] args) {
            File input = new File("D://test.png");
            File out = new File("D://watermark.png");
            // 水印文本内容,中文转Unicode
            String text = "\u6dfb\u52a0\u6c34\u5370";
            addWatermark(input, out, text, 20);
        }
    Nach dem Login kopieren
    . Zeichnen Sie ein Bildwasserzeichen. Fügen Sie dem Bild ein Bildwasserzeichen hinzu. Die Schritte sind wie folgt:

    Verwenden Sie die ImageIO-Klasse, um Bilder zu laden, die mit einem Wasserzeichen versehen werden müssen.

    • Erstellen Sie ein benutzerdefiniertes Bildobjekt von BufferedImage und verwenden Sie das Graphics2D-Objekt, um das Originalbild auf das Objekt zu zeichnen Wasserzeichenbild und legen Sie Eigenschaften wie Transparenz fest.

    • Zeichnen Sie das Wasserzeichenbild und geben Sie zugehörige Ressourcen frei.

    • Verwenden Sie die ImageIO-Klasse, um das geänderte Bild im angegebenen Verzeichnis zu speichern
          public static void addWatermark(File input, File out, File watermarkImage) {
              // 读取添加水印的图片
              BufferedImage image = null;
              try {
                  image = ImageIO.read(input);
              } catch (IOException e) {
                  e.printStackTrace();
              }
              // 获取图片的宽度和高度
              int width = image.getWidth();
              int height = image.getHeight();
              // 创建一个图片缓存对象
              BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
              // 获取图片的画笔
              Graphics2D g = newImage.createGraphics();
              // 将原图片绘制到缓存图片上
              g.drawImage(image, 0, 0, width, height, null);
              // 读取水印图片
              BufferedImage watermark = null;
              try {
                  watermark = ImageIO.read(watermarkImage);
              } catch (IOException e) {
                  e.printStackTrace();
              }
              // 获取水印图片的宽度和高度
              int wmWidth = watermark.getWidth();
              int wmHeight = watermark.getHeight();
              // 设置水印图片的透明度
              g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
              // 绘制水印图片
              g.drawImage(watermark, width - wmWidth - 10, height - wmHeight - 10, wmWidth, wmHeight, null);
              // 释放图形上下文使用的系统资源
              g.dispose();
              // 保存带水印的图片
              try {
                  ImageIO.write(newImage, "png", out);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      Nach dem Login kopieren
          public static void main(String[] args) {
              File input = new File("D://test.png");
              File out = new File("D://watermark.png");
              File watermarkImage = new File("D://watermarkImage .png");
              addWatermark(input, out, watermarkImage);
          }
      Nach dem Login kopieren

      Das obige ist der detaillierte Inhalt vonSo fügen Sie Textwasserzeichen und Bildwasserzeichenfunktionen in Java hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage