2010/12/26
カテゴリ : Tech
JavaScript
node.js
canvas
サーバサイドでCanvasを利用する(node.js)
こんにちは、中川です。
今年も残すところあと1週間をきりましたね。
このところ色々と忙しかったので年末年始はゆっくりとしたいと思います。
さて、今回の話題ですが、node.jsを使ってサーバサイドでCanvasが利用できるということで試してみました。
それでは、早速使ってみましょう。
■今回の環境
Ubuntu 10.10
node.js v0.3.1
npm 0.2.12-1
node-canvas v0.4.1
■インストール
node-canvasでは、cairoを利用しますので、事前にインストールします。
その後、npmでインストール可能です。
■動作確認
それでは、サンプルをちょっといじって実行してみましょう。
実行します。
http://localhost:3000/ にアクセスすると、以下のような画像が表示されます。

上記サンプルでは、 Canvas#toDataURL() を利用して、base64形式で表示していますが、Canvas#createPNGStream() を使ってpng画像を生成することも可能なようです。
※いまいち私の環境ではpng書き出しがうまく動かなかったので、今回添付している画像はすべてtoDataURLでの結果の画面キャプチャとなっています。。
JavaScriptのキャンバスを使ったライブラリは色々とありますので、
それらを利用してサーバ側で画像の生成が簡単に行えそうですね。
下記の参考URL内でも紹介されておりますが、flotという、グラフライブラリもHTMLやjQuery依存部分を少々改造すれば動かすことができました。
flot付属のサンプルデータを元に何個か変更しつつ動かしてみたら以下のような感じで動作確認できました。
※flotでは、判例や目盛りはHTML表示でしたので、Canvasでの表示に強引に変更しました。




■参考
・https://github.com/learnboost/node-canvas
・http://blog.learnboost.com/blog/introducing-node-canvas-server-side-html5-canvas-api/
今年も残すところあと1週間をきりましたね。
このところ色々と忙しかったので年末年始はゆっくりとしたいと思います。
さて、今回の話題ですが、node.jsを使ってサーバサイドでCanvasが利用できるということで試してみました。
それでは、早速使ってみましょう。
■今回の環境
Ubuntu 10.10
node.js v0.3.1
npm 0.2.12-1
node-canvas v0.4.1
■インストール
node-canvasでは、cairoを利用しますので、事前にインストールします。
- $
sudo apt-get install libcairo2-dev
その後、npmでインストール可能です。
- $
npm install canvas
■動作確認
それでは、サンプルをちょっといじって実行してみましょう。
- //
sample.js - var
Canvas = require('canvas') , http = require('http'); - http.createServer(function
(req, res) { var canvas = new Canvas(200,200); var ctx = canvas.getContext('2d'); // 四角形描画 ctx.fillStyle = 'rgba(0, 0, 255, 0.5)'; ctx.fillRect(10, 10, 190, 190); // テキスト描画 var text = "Canvas Test"; ctx.font = '30px Impact'; ctx.rotate(.1); ctx.fillStyle = 'rgba(0, 0, 0, 1.0)'; ctx.fillText(text, 10, 100); // アンダーライン描画 var te = ctx.measureText(text); ctx.strokeStyle = 'rgba(0,0,0,0.5)'; ctx.beginPath(); ctx.lineTo(50, 102); ctx.lineTo(50 + te.width, 102); ctx.stroke(); // 出力 res.writeHead(200, {'Content-Type': 'text/html'}); res.end('<img src="' + canvas.toDataURL() + '" />'); - }).listen(3000);
実行します。
- $
node sample.js
http://localhost:3000/ にアクセスすると、以下のような画像が表示されます。
上記サンプルでは、 Canvas#toDataURL() を利用して、base64形式で表示していますが、Canvas#createPNGStream() を使ってpng画像を生成することも可能なようです。
※いまいち私の環境ではpng書き出しがうまく動かなかったので、今回添付している画像はすべてtoDataURLでの結果の画面キャプチャとなっています。。
JavaScriptのキャンバスを使ったライブラリは色々とありますので、
それらを利用してサーバ側で画像の生成が簡単に行えそうですね。
下記の参考URL内でも紹介されておりますが、flotという、グラフライブラリもHTMLやjQuery依存部分を少々改造すれば動かすことができました。
flot付属のサンプルデータを元に何個か変更しつつ動かしてみたら以下のような感じで動作確認できました。
※flotでは、判例や目盛りはHTML表示でしたので、Canvasでの表示に強引に変更しました。
■参考
・https://github.com/learnboost/node-canvas
・http://blog.learnboost.com/blog/introducing-node-canvas-server-side-html5-canvas-api/
トラックバックURI
最近の記事
JavaScriptのクロスドメイン問題対応方法 [2012年05月17日 : 笹亀弘]
JavaScriptのコーディング規約を気軽にチェック [2012年05月14日 : 中川善樹]
誕生日プレゼント [2012年05月10日 : 阿部恵]
イラストでわかる!git入門の入門 [2012年05月09日 : 志田仁美]
【CSS3】HSL色空間による色指定のすゝめ [2012年05月09日 : 橋本章史]
インスピレーションをかきたてるポスターデザインのまとめ記事のまとめ [2012年04月25日 : 鴨田健次]
エンジニアの英会話 〜とっさの一言〜 [2012年04月19日 : 斉藤勝也]
イコライザーをFireworksで描いてみました [2012年04月16日 : 和田記光]
SFNewTech Japan Night のファイナリストに選出されました!(他、もろもろの出展の御案内) [2012年04月06日 : 小林有佳]
使えるとちょっと便利なSSHのTIPS [2012年04月04日 : 牧野克俊]













コメントフォーム