重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!goo新規会員登録

はじめまして。

画像を重ね合わせるプログラムを作成したいのですが、
期待通りにならないため悩んでおります。

Aという画像を下地に、Bという画像の特定RGBのドットを透過させて合成した画像を作りたいのですが、
どうもうまくいかず、半透明な絵ができてしまいます。
(Aがうっすらと見え、Bが重なるかんじ)

合成部分のコーディングは以下です。
AlphaCompositeの使い方が間違っているのか、AlphaCompositeではなく
別のクラスを使うのか、そもそも APIではできなくてドットを一個一個書い
ていく必要があるのか・・?

ご存じの方がいましたら、なにとぞご教授、お願いいたします。


public BufferedImage mergeTwice(BufferedImage baseImage,
BufferedImage layImage) {
// BufferedImage を Graphic2D に変換
Graphics2D baseGra = baseImage.createGraphics();
Graphics2D layGra = layImage.createGraphics();

// 2つの画像を合成
AlphaComposite composite =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
baseGra.setComposite( composite );
baseGra.drawImage(layImage, 0, 0, null);

AlphaComposite composite2 =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);

return baseImage;
}

A 回答 (1件)

画像編集ツールで、


前景画像にあらかじめ「抜き部分」(透過ピクセル)を作っておけば、
あとは単純に「重ね描き」するだけで
その部分は透けますが、
それはご存知ですか?
それではダメ、ということでしょうか。(めんどう?)

ダメだとすると、
「自力で合成」
するか(…ゆううつですが)、

または、
ある画像において、
指定色に一致したピクセルを自動的に「透過ピクセル」に変換する
ようなユーティリティ関数を作るとか。
(つまり画象編集ツールでやるようなことを関数でやる)
こっちのほうが便利かも
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!