Rumah >Java >javaTutorial >Bagaimana untuk menindih teks dengan betul pada imej buffered menggunakan grafik2d?

Bagaimana untuk menindih teks dengan betul pada imej buffered menggunakan grafik2d?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 22:19:12451semak imbas

How to Correctly Overlay Text on a BufferedImage Using Graphics2D?

Menindih Teks pada BufferedImage Menggunakan Graphics2D

Apabila cuba menindih teks pada BufferedImage menggunakan Graphics2D, adalah penting untuk memahami penggunaan yang betul daripada kaedah 'drawString()'. Koordinat x dan y yang disediakan untuk kaedah ini mewakili garis dasar untuk aksara paling kiri teks, bukannya sudut kiri atas teks.

Masalah:

Jika teks tidak mengandungi aksara menurun (seperti 'p' atau 'g'), dan dipaparkan pada kedudukan (0,0), ia akan dipaparkan di luar imej. Ini kerana tiada ruang untuk aksara dipaparkan dalam ruang yang diberikan.

Penyelesaian:

Untuk memastikan teks dipaparkan dalam imej, ia disyorkan untuk memaparkan imej dan mengubah suainya secara langsung.

Kod Contoh:

Pertimbangkan contoh kod berikut, yang memaparkan imej dengan teks "Hello, dunia!" bertindih padanya:

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
    }
}

Dengan mengubah suai imej selepas ia dipaparkan, adalah mungkin untuk memastikan teks itu ditindih dengan betul dalam imej itu sendiri.

Atas ialah kandungan terperinci Bagaimana untuk menindih teks dengan betul pada imej buffered menggunakan grafik2d?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn