Maison > Java > javaDidacticiel > Comment superposer correctement du texte sur une image tamponnée à l'aide de Graphics2D ?

Comment superposer correctement du texte sur une image tamponnée à l'aide de Graphics2D ?

Patricia Arquette
Libérer: 2024-11-29 22:19:12
original
471 Les gens l'ont consulté

How to Correctly Overlay Text on a BufferedImage Using Graphics2D?

Superposition de texte sur une image tampon à l'aide de Graphics2D

Lorsque vous essayez de superposer du texte sur une image tampon à l'aide de Graphics2D, il est important de comprendre l'utilisation correcte de la méthode 'drawString()'. Les coordonnées x et y fournies pour cette méthode représentent la ligne de base du caractère le plus à gauche du texte, plutôt que le coin supérieur gauche du texte.

Problème :

Si le texte ne contient aucun caractère descendant (tel que « p » ou « g ») et est rendu à une position de (0,0), il apparaîtra rendu en dehors de l'image. En effet, il n'y a pas de place pour que les caractères soient affichés dans l'espace donné.

Solution :

Pour garantir que le texte est rendu dans l'image, il est recommandé de restituer l'image et de la modifier directement à la place.

Exemple de code :

Considérez ce qui suit exemple de code, qui restitue une image avec le texte « Hello, world ! » superposé dessus :

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class TextOverlay {

    public static void main(String[] args) throws IOException {
        // Read the image from a URL
        BufferedImage image = ImageIO.read(new URL("image-url"));

        // Create a new image to draw on
        BufferedImage newImage = new BufferedImage(
                image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);

        // Get the graphics context for the new image
        Graphics2D g = newImage.createGraphics();

        // Draw the original image onto the new image
        g.drawImage(image, 0, 0, null);

        // Set the font and color for the text
        g.setFont(new Font("Serif", Font.BOLD, 20));
        g.setColor(Color.red);

        // Calculate the position of the text
        int x = image.getWidth() - g.getFontMetrics().stringWidth("Hello, world!") - 5;
        int y = g.getFontMetrics().getHeight();

        // Draw the text onto the new image
        g.drawString("Hello, world!", x, y);

        // Dispose of the graphics context
        g.dispose();

        // Save or display the new image
    }
}
Copier après la connexion

En modifiant l'image après son rendu, il est possible de garantir que le texte est correctement superposé dans l'image elle-même.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal