LoginSignup
8
8

More than 5 years have passed since last update.

svg vs canvas @html5

Posted at

とても基本的なことでありますが
「svg と canvas はどう違うのか?」
について調べたことをまとめておこうと思います。

ベクター形式とラスター形式

コンピュータ上で「2次元の絵」書こうと思った場合、どのような方法が考えられるでしょうか?

ざっくり言うと、
ラスター形式は(別名ビットマップと言います)、小さな点の集合を集めて絵を描く方法です。
対して、ベクター形式は、図形の集合を集めて絵を描く方法です。

svg vs canvas performance にフォーカスした場合

以下の資料が参考になります。
http://msdn.microsoft.com/ja-jp/library/gg193983(v=vs.85).aspx

svg

ベクター形式です。

メリット

図形は dom 要素(div タグみたいなもの)です。従って、図形に対して(div 要素などと同じように)マウスクリックなどのイベントに対するコールバック処理を容易に追加することができます。

「この三角形がクリックされたら」みたいな処理は、「このタグがクリックされたら」という処理と同じような形で作成できます。このような「図形を対象としたイベント駆動型の処理」をしたいなら、svg がいいでしょう。

デメリット

svg を jpg, png 画像に変換するためには、自分で変換処理を書く、又は、ライブラリを利用しなければなりません。

canvas

ラスター形式です。

メリット

図形はビットマップなので、jpg, png 画像に変換することが容易にできます。

「お絵描きアプリ」のようなものの利用者は、作成した絵を png などで保存し、作品を多数の人に見てもらいたいと思うものですので、canvas の利用が適していると言えます。

デメリット

svg で得意であった、「図形を対象としたイベント駆動型の処理」を容易に作成することができません。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8