■応用の森 Java上で画像を合成する方法について |
|
画面から投入された画像に、ウォーターマーク(透かし)画像を合成するサンプルです。 前述の「No001:Javaによる画像の縮小処理」とほぼ同じですが 画像合成メソッド composition() が追加されています。 ウォーターマーク(透かし)画像はあらかじめ作成しておいて、 画面から送信された画像データに上書き合成を行います。 |
|
送信された画像にウォーターマーク画像が合成されてラウザに表示されるはずです。 |
|
以下、サンプルソースの解説です。 view(WebContent/imgcomposit.html) フォームを送信すると、結果は同じ画面が表示され、サーバーから画像合成されて返却された 画像データ(Base64エンコード形式)を <img>タグにセットしています。 |
|
コントローラ(src/main/jp/dip/arimodoki/cntl/ImgComposit.java) ブラウザから投入された画像データは、マッピングハンドラcomposit()に渡り、 compress()メソッドで画像圧縮を行った後、composition()メソッドでウォーターマーク画像を合成し Base64エンコードしてview(HTML)に返却します。 まじめにやる場合は、compress()メソッドやcomposition()メソッドは別の汎用クラスに追い出した方がいいと思いますが、 ここでは手抜きして、コントローラクラスのprivateメソッドで実装しています。 |
|
■画像を合成する方法について 考察その2 上の方法は、画像そのものをJavaで加工してしまうというある意味ちょっと乱暴な方法ですが、 ここでは、画像の加工は行わない方法を考えてみます。 まず、下の様な感じで透かしを入れてみましたが、どうでしょうか? 画像を加工したのと見た目は変わりません。 ただしこの方法は、ベースのハイビスカスの画像と、透かし画像は別々のファイルです。 2枚の画像を、スタイルシートをうまく調整して重なりあって見えるように 配置を調整しています。 具体的には、このページのソースを見ていただければ一目瞭然です。 ここでのミソは、スタイルシートのposition属性をうまく使うことです。
|
Javaの小技集 | Javaで画像データを縮小する方法 |