昨日のエントリでは、JavaFX2.0を使ってブラウザをJava画面に組み込んでみました。
あれ、おとといのエントリだよ?っていうツッコミもあるかもしれませんが、ただいま27日31時30分なので、問題ない。
Javaでブラウザが表示できるようになるよ!
とはいえ、JavaFX2.0でWebKitラッパのWebViewができたといっても、JavaFXを使ってクライアントを作る機会がないと思ってる人は「だからどーしたの?JavaFXでフロントエンド作らないから関係ないよ」とか思ってるかもしれません。
けれど、JavaでWebKit相当のレンダリングができるというのは、サーバーサイドでもメリットがあると思います。
ということで、サーバーサイドでやりそうな、Webサイトの画面キャプチャをとってみました。
「リンク先のキャプチャとってサムネイル出したらかっこいいよねー」とか思ったことある人、結構いるはず。
昨日のエントリのrunLaterのところで、読み込み後にWebサイト画面を保存するようにします。
あとは、Linux版などを待つのみですね。
ソース(一部)はこちら。
Platform.runLater(new Runnable() { @Override public void run() { engine = new WebEngine("http://d.hatena.ne.jp/nowokay/"); WebView view = new WebView(engine); Group root = new Group(); root.getChildren().add(view); Scene scene = new Scene(root); panel.setScene(scene); //サイト読み込み終了時の処理を登録 Task<Void> task = engine.getLoadTask(); task.setOnDone(new EventHandler<TaskEvent>() { @Override public void handle(TaskEvent event) { //ファイル選択 JFileChooser chooser = new JFileChooser(); int result = chooser.showSaveDialog(WebFrame.this); if(result != JFileChooser.APPROVE_OPTION){ return; } //保存 Dimension d = panel.getSize(); BufferedImage img = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_RGB); Graphics g = img.getGraphics(); panel.paint(g); g.dispose(); try { ImageIO.write(img, "png", chooser.getSelectedFile()); } catch (IOException ex) { ex.printStackTrace(); } } }); } });