ホームページ >Java >&#&チュートリアル >Javaを使用して画像をテキストの形に切り取る方法?

Javaを使用して画像をテキストの形に切り取る方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 12:05:17182ブラウズ

How to Cut an Image into the Shape of Text Using Java?

テキストの形で画像を切り出す

問題: 2 つの画像 (1 つはテキストを含み、もう 1 つは画像を含む) が与えられた場合、次のように作成します。の形をした画像の切り抜きtext.

要件:

  • テキストは背景が透明で黒である必要があります。
  • 出力画像の背景も透明である必要があります。
  • 両方の入力画像は同じである必要がありますsize.

解決策:

この効果を実現するには、Java AWT ライブラリを使用できます。以下にその方法を示すコード スニペットを示します。

import java.awt.*;
import java.awt.font.*;
import java.awt.image.BufferedImage;
import java.awt.geom.Rectangle2D;
import javax.imageio.ImageIO;
import java.net.URL;
import java.io.File;

class PictureText {

    public static void main(String[] args) throws Exception {
        URL imageUrl = new URL("https://i.sstatic.net/Nqf3H.jpg");
        BufferedImage originalImage = ImageIO.read(imageUrl);
        BufferedImage textImage = new BufferedImage(
            originalImage.getWidth(),
            originalImage.getHeight(),
            BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = textImage.createGraphics();
        FontRenderContext frc = g.getFontRenderContext();
        Font font = new Font(Font.SANS_SERIF, Font.BOLD, 250);
        GlyphVector gv = font.createGlyphVector(frc, "Cat");
        Rectangle2D box = gv.getVisualBounds();
        int xOffset = 25 + (int)-box.getX();
        int yOffset = 80 + (int)-box.getY();
        Shape shape = gv.getOutline(xOffset, yOffset);
        g.setClip(shape);
        g.drawImage(originalImage, 0, 0, null);
        g.setClip(null);
        g.setStroke(new BasicStroke(2f));
        g.setColor(Color.BLACK);
        g.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        g.draw(shape);

        g.dispose();

        File outputFile = new File("cat-text.png");
        ImageIO.write(textImage, "png", outputFile);
        Desktop.getDesktop().open(outputFile);
    }
}

このコードでは:

  1. 両方の画像を BufferedImage オブジェクト (originalImage と textImage) に読み込みます。
  2. We textImage に描画するためのグラフィックス コンテキストを作成します。
  3. 提供されたテキストからグリフ ベクトルを作成します。
  4. グラフィックス コンテキストのクリップ形状をグリフ ベクトルのアウトラインに設定し、画像の残りの部分を効果的にマスクします。
  5. 元の画像を textImage 上に描画します。 、テキストの形状にクリップされます。
  6. クリップマスクを削除し、テキストの輪郭を描画します。 black.
  7. 最後に、textImage をファイルに書き込み、デフォルトの画像ビューアで開きます。

以上がJavaを使用して画像をテキストの形に切り取る方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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