ホームページ >Java >&#&チュートリアル >Graphics2D を使用して BufferedImage にテキストを正しくオーバーレイする方法

Graphics2D を使用して BufferedImage にテキストを正しくオーバーレイする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 22:19:12382ブラウズ

How to Correctly Overlay Text on a BufferedImage Using Graphics2D?

Graphics2D を使用して BufferedImage にテキストをオーバーレイする

Graphics2D を使用して BufferedImage にテキストをオーバーレイしようとする場合は、正しい使用法を理解することが重要です「drawString()」メソッドの。このメソッドに提供される x 座標と y 座標は、テキストの左上隅ではなく、テキストの左端の文字のベースラインを表します。

問題:

テキストに降順文字 (「p」や「g」など) が含まれておらず、(0,0) の位置にレンダリングされる場合、テキストは、 画像。これは、指定されたスペース内に文字を表示する余地がないためです。

解決策:

テキストが画像内にレンダリングされるようにするには、代わりに、画像をレンダリングして直接変更することをお勧めします。

コード例:

「Hello, world!」というテキストを含む画像をレンダリングする次のコード例を考えてみましょう。オーバーレイ:

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

レンダリング後に画像を変更することで、テキストが画像自体内で正しくオーバーレイされるようにすることができます。

以上がGraphics2D を使用して BufferedImage にテキストを正しくオーバーレイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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