Rumah >Java >javaTutorial >Mengapa Tindanan Teks Saya Tidak Muncul Betul pada Imej Buffered?
BufferedImage: Tindanan dan Pengembalian Teks
Salah Faham Koordinat Lukisan Teks
Dalam semasa anda kod, teks tidak muncul seperti yang diharapkan kerana anda merujuk koordinat yang salah untuk drawString(). Ia menggunakan (x, y) sebagai garis dasar untuk melukis aksara paling kiri rentetan, bukan kedudukan mutlak teks.
Melaraskan untuk Garis Dasar Teks
Kepada mengimbangi ini, laraskan koordinat y anda untuk mengambil kira ketinggian fon:
gO.drawString(this.text, this.x, this.y + 12);
Ini mengandaikan bahawa anda menggunakan fon dengan garis dasar 12px. Jika perlu, anda boleh melaraskan offset dengan sewajarnya.
Pertimbangan Model Warna
Perlu diingat bahawa anda juga mungkin menghadapi ketidakserasian disebabkan oleh model warna yang digunakan dalam imej. Pertimbangkan untuk memaparkan imej dengan model warna yang sesuai dan kemudian mengubah suainya secara in situ menggunakan kaedah di bawah:
private BufferedImage process(BufferedImage image) { Graphics2D g2d = image.createGraphics(); // Code to overlay text... g2d.dispose(); return image; }
Dalam pendekatan ini, teks dilukis terus ke imej sedia ada, memastikan keserasian.
Kod Penuh Dibetulkan
protected BufferedImage Process2(BufferedImage image){ Graphics2D gO = image.createGraphics(); gO.setColor(Color.red); gO.setFont(new Font( "SansSerif", Font.BOLD, 12 )); gO.drawString(this.text, this.x, this.y + 12); System.err.println(this.text+this.x+this.y); return image; }
Atas ialah kandungan terperinci Mengapa Tindanan Teks Saya Tidak Muncul Betul pada Imej Buffered?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!