ホームページ >Java >&#&チュートリアル >テキスト オーバーレイが BufferedImage に正しく表示されないのはなぜですか?

テキスト オーバーレイが BufferedImage に正しく表示されないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 03:05:28768ブラウズ

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

BufferedImage: テキストオーバーレイとリターン

テキスト描画座標の誤解

現在のコードでは、間違った座標を参照しているため、テキストが期待どおりに表示されません。描画文字列()。テキストの絶対位置ではなく、文字列の左端の文字を描画するベースラインとして (x, y) を使用します。

テキスト ベースラインの調整

Toこれを補って、フォントの高さを考慮して y 座標を調整します。

gO.drawString(this.text, this.x, this.y + 12);

これは、次のことを前提としています。ベースラインが 12px のフォントを使用します。必要に応じて、それに応じてオフセットを調整できます。

カラー モデルに関する考慮事項

画像で使用されているカラー モデルが原因で非互換性が発生する可能性もあることに注意してください。適切なカラー モデルを使用して画像をレンダリングし、次の方法を使用してその場で変更することを検討してください。

private BufferedImage process(BufferedImage image) {
    Graphics2D g2d = image.createGraphics();
    // Code to overlay text...
    g2d.dispose();
    return image;
}

このアプローチでは、テキストが既存の画像上に直接描画され、互換性が確保されます。

完全に修正されたコード

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

以上がテキスト オーバーレイが BufferedImage に正しく表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。