
画像RSS
- 1
Creepypasta私家訳『私のためじゃない美』(原題“Aesthetically Pleasing”)2025-01-05 17:03"Lips." by Haleyface is licensed under CC BY 2.0. 作品紹介 男たちの欲望に答え続けた女の、ありふれた絶望の物語。 作品情報 原作 Aesthetic...
- 2
Creepypasta私家訳『肖像画』(原題“The Portraits”)2025-01-05 12:40"Frame 2" by ~jar{} is licensed under CC BY 2.0. 作品紹介 かなり古典的なクリーピーパスタです。 Creepypasta Wikiでは“Suggest...2025-01-05 12:40
- 3
さよならシャニアニ2期2024-12-29 13:57先日、『アイドルマスターシャイニーカラーズ 2nd season』最終話が放映されました。私はシャニアニ1期をネット配信で、2期第1・2章を映画館で鑑賞しました。当初は2期第3章も映画館で見る予定で...2024-12-29 13:57
- 4
Creepypasta私家訳『鬼ごっこ』(原題“A Game of Tag”)2024-12-18 14:30"YouTube Test" by Jaysin Trevino is licensed under CC BY 2.0. 作品紹介 動画に記録された、恐るべき怪異についての物語。怪異は犠牲者を追い...2024-12-18 14:30
- 5
Creepypasta私家訳『ウッドハロー公園の子供たち』(原題“The Children of Woodharrow Park”)2024-12-08 09:29作品紹介 絶望した男が出会った、不思議な子供たちのお話です。 Creepypasta Wikiでは“Pasta of the Month”に指定されています。 作品情報 原作 The Childre...2024-12-08 09:29
- 6
enza版シャニマス6.5th、シャニソン1stアニバーサリーイベントの記録2024-11-17 06:55先日、enza版シャニマスは6.5周年、シャニソンは1周年のアニバーサリーを迎えた。アニバーサリーイベントは大盛況……だったら良かったのだが、実際のところは学マスの陰に隠れて風前の灯と言ったところ。...2024-11-17 06:55
- 7
Creepypasta私家訳『ハッピー・サン・デイケア』(原題“Happy Sun Daycare”)2024-09-23 02:43作品紹介 はすお様からのリクエストで翻訳しました。廃業した保育園に隠された過去の物語です。 “Happy Sun Daycare”は「ハッピー・サン保育園」などとも訳せそうですが、「ハッピー・サン・...2024-09-23 02:43
- 8
Creepypasta私家訳『セオドアくんへ』(原題“Dear Theodore”)2024-09-12 14:54"Beds" by Didriks is licensed under CC BY 2.0. 作品紹介 お節介な恐ろしいモンスターについてのお話です。Creepypasta Wikiでは“Sugge...2024-09-12 14:54
- 9
シャニアニ2ndに水を差す2024-09-08 10:00画像は『アイドルマスターシャイニーカラーズ 2nd season』の「第2章」より引用 (2024年9月8日取得。©Bandai Namco Entertainment Inc.) 現在、『アイドル...2024-09-08 10:00
- 10
福丸小糸のフィギュアについて考察する2024-08-27 18:42左は「福丸小糸 ミッドナイトモンスターver.」。右手前は「【はれのひ喫茶店】福丸小糸」。右奥はもちWhat!というシリーズのぬいぐるみ。 福丸小糸とは、『アイドルマスター シャイニーカラーズ』シリ...2024-08-27 18:42
2016年9月4日日曜日
画像を出力するJava Servlet
ウェブサーバに動的に画像を出力させたい場合がある。 リアルタイムで値が変動するデータのグラフを作りたい場合やアクセスカウンターを作りたい場合などがそれである。 グラフはJavaScriptのCanvas 2Dでも実現できなくもないだろうが、JavaScriptはクライアントに依存するため、それだけに頼るのは避けるべきである。SVGというXMLを利用した方法も使えるだろうが、SVGでは不都合な場合もあるだろう。SVGはブラウザによっては対応していないこともあるかもしれない。
そのため、Java Servletを利用して画像を出力する方法を考えてみた。思いの外簡単であり、誰でも思いつくようなことだろうが一応書いておく。
画像を出力するにあたってまず必要なことは、HttpServletインスタンスのdoGetメソッド等の引数である HttpServletResponseインスタンスのメソッドsetContentTypeを実行することである。 そのメソッドの引数に"image/png"などの画像の形式 (MIME型) を表す文字列を与えればいい。
Javaで画像を扱うのに簡単な方法はBufferedImageを使うことである。 コンストラクタで一から生成してもいいし、ImageIOのreadメソッドで既存のファイルを鋳型として生成してもいい。BufferedImageの getGraphicsメソッドの返り値のGraphicsインスタンスや、 createGraphicsメソッドの返り値のGraphics2Dインスタンスを利用すれば、画像の変換等を行うことができる。
画像の処理を行った後、最後にImageIOのwriteメソッドを実行する。第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 件のコメント:
コメントを投稿