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
368 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!

source:php.cn
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