昨日の夜は、Javaで画像を合成するプログラムを書いてました。合成するといっても、ある画像に別の画像を上書きするという、けっこう単純なプログラムなんですが。
でも、JavaのGraphic2Dを使った経験がほとんどないので、けっこう詰まりました。画像は、通常Imageクラスを継承したクラスで表されているのが普通なんですが、そこからが未知の領域。Imageを描画するには、ImageConsumerインターフェースがImageProducerクラスに対して要求を出すところから始まるのですが、その応答をいかしにて返すか。そこが今回のプログラムの山場だったと思います。
基本的に2枚の画像を組み合わせる時を考えると、上書きする方の画像の背景部分は透過するようにしたほうが直感的ですよね。というわけで、上書きする方の背景が白い時は上書きされる方の色情報を返すようにして、そのほかの時は上書きする方を返すようにしました。
経験さえあれば、1時間もあればできるプログラムを5時間くらいかかって作成してました。プログラムは経験がものを言いますね、やっぱり。
Comments [2]
勉強中さん
> Javaをつかって、サーバー側にあるAとBの2つの画像ファイル(png)について、Aを透過させて、A上の文字だけをBの画像の上に合成する方法をおわかりの方がおられましたらご教示いただけないでしょうか。
> 大変恐れいりますが何卒宜しくお願いいたします。
あといろいろ調べてましたらJAIという画像処理のAPIに
いきついたのですが、これを利用するのでしょうか?
恐れ入りますがご教示いただけましたら幸いでございます。
何卒宜しくお願いいたします。>
> 環境は、j2sdk1.4.2、Windows2003Serverです。
tetsuさん
だいぶ昔のことで忘れましたが、次のURLを参照した記憶があります。
http://www005.upp.so-net.ne.jp/aoken/imgflt.html
http://www.mars.dti.ne.jp/~torao/program/graphics/filter.html
申し訳ないのですが、JAIというものが何かは私には分かりません。
もしかすると関係があるのかもしれませんが、今のところなんとも
いえません。
あと、調べてみて使えそうかなと思ったソースとしては「Plime」があります。
Vectorでも公開されていますのですぐに見つかるかと思います。
プログラムとソースが同梱されていますので、頑張って読み進めば
処理部分も分かるのではないでしょうか。
核心をつくような返答ではないですが、なにかのお役に立てれば幸いです。
コメントする