忍者ブログ

孤島の奇譚

思いつきで始めるブログ。漫画や音楽、アニメ、小説などの感想や、突飛な思いつきなどを書く。プログラミングが趣味だから、そういう話もしたいところ。一度失敗したのに懲りないのはいつものことだ。移動しました→http://isolated-hyakunin-isshu.blogspot.jp/

画像を出力するJava Servlet

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

画像を出力するJava Servlet

 ウェブサーバに動的に画像を出力させたい場合がある。 リアルタイムで値が変動するデータのグラフを作りたい場合やアクセスカウンターを作りたい場合などがそれである。 グラフはJavaScriptのCanvas 2Dでも実現できなくもないだろうが、JavaScriptはクライアントに依存するため、それだけに頼るのは避けるべきである。SVGというXMLを利用した方法も使えるだろうが、SVGでは不都合な場合もあるだろう。SVGはブラウザによっては対応していないこともあるかもしれない。

 そのため、Java Servletを利用して画像を出力する方法を考えてみた。思いの外簡単であり、誰でも思いつくようなことだろうが一応書いておく。

 画像を出力するにあたってまず必要なことは、HttpServletインスタンスのdoGetメソッド等の引数である HttpServletResponseインスタンスのメソッドsetContentTypeを実行することである。 そのメソッドの引数に"image/png"などの画像の形式 (MIME型) を表す文字列を与えればいい。

 Javaで画像を扱うのに簡単な方法はBufferedImageを使うことである。 コンストラクタで一から生成してもいいし、ImageIOreadメソッドで既存のファイルを鋳型として生成してもいい。BufferedImagegetGraphicsメソッドの返り値のGraphicsインスタンスや、 createGraphicsメソッドの返り値のGraphics2Dインスタンスを利用すれば、画像の変換等を行うことができる。

 画像の処理を行った後、最後にImageIOwriteメソッドを実行する。第1の引数に処理を行ったBufferedImageのインスタンスを指定する。 第2の引数は"PNG"や"JPEG"等の画像の形式を表す文字列とする。 HttpServletResponseインスタンスのメソッドgetOutputStreamの返り値を第3の引数とする。 こうして、画像が出力される。

public class ImageDrawer extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("image/png");
		
		BufferedImage img=new BufferedImage(200,200,BufferedImage.TYPE_INT_ARGB);
		Graphics g=img.getGraphics();

		g.setColor(Color.BLACK);
		g.fillRect(0,0,200,200);
		g.setColor(Color.WHITE);
		g.setFont(new Font("梅明朝",Font.BOLD,30));
		g.drawString("0123456789",0,30);
		g.drawLine(0,0,200,200);
		
		OutputStream os=response.getOutputStream();
		ImageIO.write(img,"PNG",os);
	}
}
実効結果
実効結果

 上記のコードを実行すれば、このような画像が出力されるはずである。



拍手[0回]

PR

コメント

PR

伝説のロック(?)バンド「たま」の楽曲を聞くならばとりあえずこの1枚を。

筋肉少女帯入門に最適のベスト盤。

筋肉少女帯の最高傑作。「狂気」をテーマにした楽曲を集めたアルバム。「蜘蛛の糸」と「ハッピーアイスクリーム」が特に好き。

谷山浩子入門に最適のベスト盤。暖かく優しい白の楽曲と、奇妙な味の黒の楽曲の両方を楽しめる。

天才研究者の姉が貝殻人間になった理由とは。衝撃的な表題作を筆頭に、きょうだいたちの物語が収められた短編集。

遠い未来、人間は宝石となった。弱く脆い主人公・フォスフォフィライトの変化の物語。

大槻ケンヂ氏の短編小説集。悩める中学生・高校生におすすめしたい。