無料Wikiサービス | デモページ
Linuxなどのメモ書き

吹き出し合成Webアプリ


画像に漫画っぽい吹き出しとセリフを合成できるWebアプリを作成しました。

http://tools.bit-hive.com/comic_balloon/

例えば、こんな(↓)元画像に

以下のように吹き出しを追加できます。編集結果はpng形式で出力できます。



特徴

特徴は以下のとおり。

  • Webアプリなのでソフトのインストールは不要
  • 吹き出し内のテキストはフォント、フォントサイズ、スタイル(Italic、Bold)、縦書き/横書きが設定可能。
  • 吹き出しの形状は数パターンから選択可
  • 吹き出しの大きさ、位置はある程度自由に変更可

対応ブラウザは以下のとおり。

  • IE9以降
  • FireFox
  • Chrome
  • Safari
  • iPhone(iOS6) 5/13追加
  • iPad(iOS6) 5/10追加

使い方

(1) まずはアクセス

http://tools.bit-hive.com/comic_balloon/にアクセスすると以下のようなページが表示される(画像欄は空白)。


アプリページ

ページ左に操作用のコマンドウィンドウがある。ウィンドウはタイトルバーの部分をドラッグすれば移動可能。非表示にしたい場合は、ページ上部の「コマンド非表示」ボタンで消すことができる。

コマンドウィンドウ

(2) 背景画像の読み込み

操作バーのアップロードフォームから画像ファイルを指定し、「背景画像に設定」をクリックすると、指定画像が一旦サーバーにアップされた後、画像欄に表示される。

(3) 吹き出しの配置

コマンドウィンドウの「吹き出し」欄のボタンを押すと、それぞれ形状の異なる吹き出しが画像上に追加される。

吹き出しはドラッグで移動可能。また、吹き出しをクリックすると、吹き出し周辺に黄色い丸が表示され、この黄色い丸を動かすことで、吹き出しのサイズ変更等を行える。

形状変更用のマーカー

吹き出しは複数設置できる。設置した吹き出しを削除したい場合は、対象の吹き出しをクリックして選択状態にした後、「吹き出し削除」をクリックすれば削除される。

(4) セリフの追加

吹き出しにセリフを追加するには、吹き出しを選択(クリックして黄色いマーカーが表示された状態)した状態で、「セリフ設定」を押す。テキスト入力フォームが表示されるので、セリフを入力して決定を押すと、セリフが吹き出しに反映される。

テキスト入力フォーム

(5) 画像の保存

編集した状態を画像として保存するには、「png画像化」を押す。png画像のサムネイルが表示されるので、サムネイルを右クリックして「名前を付けて画像を保存」で保存できる。

その他 - CreateJSの感想

このツールはCreateJSを使って実装した(CreateJSの勉強がてら)。今時は、html5のcanvasタグを使うことで、JavaScriptを使ったWebアプリからでもグラフィックは自在に描ける。ただし、描いたグラフィックに対してClickイベントをとるといったことはできない。描画したオブジェクトに対してイベントを取ろうとすると、自分で描画オブジェクトの座標やサイズを管理し、canvasタグへのClickイベントを捕まえて、自分でHitCheckを行う必要があり、かなり面倒になる。

そこで、CreateJSの出番なのだが、CreateJSではcanvasタグに関する機能をWrapして、Flash likeな環境を提供している。上記のような、描画オブジェクトに対してClickイベントを取ることも簡単にできる。canvasを使ってインタラクティブな動作をさせようとすると、canvasタグの描画機能だけでは足りず、どうしてもイベント関連の機能が必要になるが、CreateJSを使うことでイベントまわりの機能を補うことができ、canvasタグを使ったアプリケーション作成が簡単にできるようになる。

APIや用語(Stage,DisplayObject等)もFlashを意識して作られているため、Flash(というかActionScript)使いには、比較的扱いやすいと思われる。

1点戸惑ったのが、イベントが伝搬しないこと。DOMイベントでは、あるノードをクリックすると親ノードにもイベントが伝搬していくが、CreateJSでは伝搬せず、addEventListenerでリスナーを登録しているノードのうち、最上位のノードにしかイベントが通知されない。これは、パフォーマンスを考慮してこのような動作になっているようだ。

 ↑新しいバージョン(EaselJS Ver. 0.7以降?)では、イベントが親ノードにも伝搬するようになった。おかげでDOMツリーのイベント処理と同じ感覚で処理でき、かなり使いやすくなった。


最終更新 2015/02/05 23:22:09 - kztomita
(2013/05/04 20:01:00 作成)
添付ファイル
cat.jpg - kztomita
balloon.jpg - kztomita
quote.png - kztomita
cat2.png - kztomita
ss.jpg - kztomita
command.jpg - kztomita