ホームページ > Java > &#&チュートリアル > Java を使用して、画像を別の画像のテキストの形に切り取るにはどうすればよいでしょうか?

Java を使用して、画像を別の画像のテキストの形に切り取るにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-12-08 19:51:12
オリジナル
718 人が閲覧しました

How can Java be used to cut an image to the shape of text in another image?

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

このプログラミング パズルでは、画像を別のテキスト形式に抽出することを目指します。 image.

どちらも画像として与えられた猫の写真とテキスト「猫」について考えてみましょう。目標は、透明な背景を維持しながら、猫のシルエットが「Cat」テキストの形状と一致する新しい画像を作成することです。

これを実現するために、Java のグラフィック機能を活用します。まず、両方のイメージを読み込みます。次に、元の猫の写真と同じサイズの新しい画像を作成し、その上に「猫」のテキストを描画します。カットアウト効果を作成するには、Graphics2D クラスを利用して、テキストのアウトラインに基づいてクリッピング形状を定義します。これにより、猫の画像が効果的にマスクされ、テキストのシルエットと一致する領域のみが表示されます。

最後に、マスクされた猫の画像を描画し、テキストの輪郭を描くことによって、トリミングされた画像をレンダリングします。結果の画像には、「Cat」のテキスト形状と完全に一致する猫のシルエットが表示され、両方の画像の背景が透明です。

以下のコード スニペットは、この画像処理ソリューションの実装を示しています。

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 catUrl = new URL("https://i.sstatic.net/Nqf3H.jpg");
        URL textUrl = new URL("https://i.sstatic.net/EUtiX.png");
        BufferedImage catImage = ImageIO.read(catUrl);
        BufferedImage textImage = ImageIO.read(textUrl);

        int width = catImage.getWidth();
        int height = catImage.getHeight();
        BufferedImage cutoutImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

        Graphics2D g = cutoutImage.createGraphics();
        g.drawImage(catImage, 0, 0, null);

        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(catImage, 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("cutout-image.png");
        ImageIO.write(cutoutImage, "png", outputFile);
        Desktop.getDesktop().open(outputFile);
    }
}
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート