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
Lepaskan: 2024-11-29 22:19:12
asal
368 orang telah melayarinya

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
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan