Heim >Java >javaLernprogramm >Wie schneide ich mit Java ein Bild in die Form eines Textes?

Wie schneide ich mit Java ein Bild in die Form eines Textes?

Linda Hamilton
Linda HamiltonOriginal
2024-12-03 12:05:17180Durchsuche

How to Cut an Image into the Shape of Text Using Java?

Ein Bild in Form von Text ausschneiden

Problem: Erstellen Sie zwei Bilder, von denen eines Text und das andere ein Bild enthält ein Ausschnitt des Bildes in Form des Text.

Anforderungen:

  • Der Text muss schwarz sein und einen transparenten Hintergrund haben.
  • Das Ausgabebild sollte auch einen transparenten Hintergrund haben.
  • Beide Eingabebilder müssen das gleiche haben Größe.

Lösung:

Um diesen Effekt zu erzielen, können wir die Java AWT-Bibliothek verwenden. Hier ist ein Codeausschnitt, der zeigt, wie:

import java.awt.*;
import java.awt.font.*;
import java.awt.image.BufferedImage;
import java.awt.geom.Rectangle2D;
import javax.imageio.ImageIO;
import java.net.URL;
import java.io.File;

class PictureText {

    public static void main(String[] args) throws Exception {
        URL imageUrl = new URL("https://i.sstatic.net/Nqf3H.jpg");
        BufferedImage originalImage = ImageIO.read(imageUrl);
        BufferedImage textImage = new BufferedImage(
            originalImage.getWidth(),
            originalImage.getHeight(),
            BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = textImage.createGraphics();
        FontRenderContext frc = g.getFontRenderContext();
        Font font = new Font(Font.SANS_SERIF, Font.BOLD, 250);
        GlyphVector gv = font.createGlyphVector(frc, "Cat");
        Rectangle2D box = gv.getVisualBounds();
        int xOffset = 25 + (int)-box.getX();
        int yOffset = 80 + (int)-box.getY();
        Shape shape = gv.getOutline(xOffset, yOffset);
        g.setClip(shape);
        g.drawImage(originalImage, 0, 0, null);
        g.setClip(null);
        g.setStroke(new BasicStroke(2f));
        g.setColor(Color.BLACK);
        g.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        g.draw(shape);

        g.dispose();

        File outputFile = new File("cat-text.png");
        ImageIO.write(textImage, "png", outputFile);
        Desktop.getDesktop().open(outputFile);
    }
}

In diesem Code:

  1. Wir laden beide Bilder in BufferedImage-Objekte (originalImage und textImage).
  2. Wir Erstellen Sie einen Grafikkontext, damit textImage darauf zeichnen kann.
  3. Wir erstellen einen Glyphenvektor aus dem bereitgestellten Text und bestimmen dessen visuelle Darstellung Grenzen.
  4. Wir stellen die Clipform des Grafikkontexts auf den Umriss des Glyphenvektors ein und maskieren so effektiv den Rest des Bildes.
  5. Wir zeichnen das Originalbild auf das Textbild, beschnitten auf das Form des Textes.
  6. Wir entfernen die Clip-Maske und zeichnen den Umriss des Textes in Schwarz.
  7. Zuletzt schreiben wir den Text ins Bild eine Datei und öffnen Sie sie im Standard-Bildbetrachter.

Das obige ist der detaillierte Inhalt vonWie schneide ich mit Java ein Bild in die Form eines Textes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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