canvasの内容を画像(データURI)に変換してみます。
サンプルコード
canvasに内容を適当に描画して、画像として出力させてみます。
HTML
<canvas id="canvas" width="480" height="320"></canvas> <button id="output">出力</button> <div id="result"></div>
JavaScript
window.onload = function() { draw(); } var canvas; var ctx; function draw() { canvas = document.getElementById('canvas'); if(!canvas || !canvas.getContext) return false; ctx = canvas.getContext('2d'); var img = new Image(); img.src = 'image.jpg'; img.onload = function() { // マスク ctx.beginPath(); ctx.arc(240, 160, 150, 0, Math.PI * 2, false); ctx.clip(); ctx.drawImage(img, 0, 0); ctx.font = 'bold 32px MS PGothic'; ctx.fillStyle = '#ff0000'; ctx.fillText('テスト', 260, 240); } } document.getElementById('output').addEventListener('click', function() { // canvasを画像に変換して出力 var data = canvas.toDataURL(); document.getElementById('result').innerHTML = '<img src="' + data + '">'; }, false);
canvasを画像に変換して出力している部分は30,31行目になります。
canvasを画像に変換するデモページ
第一引数で拡張子を指定できます。
JavaScript
window.onload = function() { draw(); } var canvas; var ctx; function draw() { canvas = document.getElementById('canvas'); if(!canvas || !canvas.getContext) return false; ctx = canvas.getContext('2d'); var img = new Image(); img.src = 'image.jpg'; img.onload = function() { // マスク ctx.beginPath(); ctx.arc(240, 160, 150, 0, Math.PI * 2, false); ctx.clip(); ctx.drawImage(img, 0, 0); ctx.font = 'bold 32px MS PGothic'; ctx.fillStyle = '#ff0000'; ctx.fillText('テスト', 260, 240); } } document.getElementById('output').addEventListener('click', function() { // canvasを画像に変換して出力 var data = canvas.toDataURL('image/jpeg'); document.getElementById('result').innerHTML = '<img src="' + data + '">'; }, false);
拡張子がjpegの場合、第二引数で画質を指定できます。
JavaScript
window.onload = function() { draw(); } var canvas; var ctx; function draw() { canvas = document.getElementById('canvas'); if(!canvas || !canvas.getContext) return false; ctx = canvas.getContext('2d'); var img = new Image(); img.src = 'image.jpg'; img.onload = function() { // マスク ctx.beginPath(); ctx.arc(240, 160, 150, 0, Math.PI * 2, false); ctx.clip(); ctx.drawImage(img, 0, 0); ctx.font = 'bold 32px MS PGothic'; ctx.fillStyle = '#ff0000'; ctx.fillText('テスト', 260, 240); } } document.getElementById('output').addEventListener('click', function() { // canvasを画像に変換して出力 var data = canvas.toDataURL('image/jpeg', 0.2); document.getElementById('result').innerHTML = '<img src="' + data + '">'; }, false);
【参考サイト】
コメントが承認されるまで時間がかかります。