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!