- HOME
- JavaScript入門[HTML5編]
- canvasを画像に変換する
ここでは、canvasに描いた図形や文字を、画像に変換する方法を見ていきます。 画像に変換すれば、右クリックで保存したり、他の画像と入換えしたりすることができるようになります。
canvasデータを画像に変換する
canvasで描画したデータを画像に変換するには、toDataURL()を使います。
- canvas.toDataURL(画像形式)
- キャンバス内のデータをdata:形式に変換します。
- 画像形式はimgage/png,image/jpeg,image/svg+xmlの何れかを指定します。 省略した場合はPNG形式になります。
toDataURL()の前は、contextではなくcanvasである点注意して下さい。
画像変換サンプル
以下のサンプルでは、canvasにラインを9列、ランダムな色で描いていきます。 「色変更」ボタンを押すと、その度に色が変わります。
もし綺麗なラインができたら、「画像に変換」ボタンを押して下さい。 下に同じ画像がコピーされます。下側はpng画像なので、 右クリックして保存ができます。試してみて下さい。
<canvas id="cv1" width="360" height="240"></canvas>
<script>
var cvs = document.getElementById("cv1");
var ctx = cvs.getContext("2d");
//canvasにランダムなカラーラインを描く関数
function chgCol()
{
  for ( var i = 0 ; i < 9 ; i++ )
  {
    var r = Math.floor(Math.random()*256);
    var g = Math.floor(Math.random()*256);
    var b = Math.floor(Math.random()*256);
    ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
    ctx.fillRect( 40*i, 0, 40, 240 );
  }
}
//canvasデータを画像に変換にする関数
function chgImg()
{
  var png = cvs.toDataURL();
  document.getElementById("newImg").src = png;
}
</script>
<form>
<input type="button" value="色変更" onclick="chgCol()">
<input type="button" value="画像に変換" onclick="chgImg()">
</form>
<div><img id="newImg"></div>
<描画結果>canvasタグにはCSSで二重線の枠を付けています
(FireFoxではcanvas内の図形も、右クリックして保存ができます。 しかし他のブラウザではcanvas内のデータを画像として保存できません。 この方法で画像に変換してから保存となります)。