Rumah >Java >javaTutorial >Mengapa Tindanan Teks Saya Tidak Muncul Betul pada Imej Buffered?

Mengapa Tindanan Teks Saya Tidak Muncul Betul pada Imej Buffered?

Patricia Arquette
Patricia Arquetteasal
2024-12-02 03:05:28766semak imbas

Why Doesn't My Text Overlay Appear Correctly on a BufferedImage?

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!

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