HTML5 > Canvasの絵を画像ファイルに変換する

今日の課題:Canvasの絵を画像ファイルに変換する



<!DOCTYPE html>
<html>
    <head>
        <title>HTML5の練習@ヒッキープログラミングスレ</title>
        <style type="text/css">
            body { background-color: silver; }
            canvas { background-color: white; }
        </style>
    </head>
    <body>
        <h4>画像ファイルに変換する</h4>
        <canvas id="mycanvas" width="200" height="200"></canvas> 
        <span>png<img id="myimg" src="" /></span> 
        <span>jpeg<img id="myjpg" src="" /></span> 
        <span>fail<img id="myfail" src="" /></span>
        <script language="javascript" type="text/javascript">
 
            function mydraw() {
                var canvas = document.getElementById('mycanvas');
                var ctx = canvas.getContext('2d');
                ctx.beginPath();
 
                ctx.strokeStyle = 'red';
                ctx.fillStyle = 'yellow';
 
                ctx.moveTo(10, 60);
                ctx.lineTo(190, 60);
                ctx.lineTo(30, 180);
                ctx.lineTo(100, 10);
                ctx.lineTo(170, 180);
                ctx.closePath();
                ctx.fill();
                ctx.stroke();
 
                try {
                    var png_url = canvas.toDataURL();
                    document.getElementById('myimg').src = png_url;
                } catch (e) {
                    document.getElementById('myimg').parentNode.appendChild(
                        document.createTextNode('しっぱい')
                        );
                }
 
                try {
                    var jpeg_url = canvas.toDataURL('image/jpeg');
                    if (jpeg_url.match(/^data\:image\/png/)) {
                        document.getElementById('myjpg').parentNode.appendChild(
                            document.createTextNode('変換失敗png')
                            );
                    }
                    document.getElementById('myjpg').src = jpeg_url;
                } catch (e) {
                    document.getElementById('myjpg').parentNode.appendChild(
                        document.createTextNode('しっぱい')
                        );
                }
 
                try {
                    var unko_url = canvas.toDataURL('image/unko');
                    if (unko_url.match(/^data\:image\/png/)) {
                        document.getElementById('myfail').parentNode.appendChild(
                            document.createTextNode('変換失敗png')
                            );
                    }
                    document.getElementById('myfail').src = unko_url;
                } catch (e) {
                    document.getElementById('myfail').parentNode.appendChild(
                        document.createTextNode('しっぱい')
                        );
                }
 
            }
 
            mydraw();
 
        </script>
    </body>
</html>
 

  • canvas.toDataURL() Canvasの絵を画像ファイル(PNG形式)に変換する、描写の無いとこは透明色になる
  • canvas.toDataURL(m) mで指定した画像ファイル形式(MIMEで指定)に変換する、未対応だとPNG形式になる
    変換したURLの冒頭がdata:image/pngかどうかで判断できるらしい
  • ブラウザがtoDataURL()に対応してないと例外を投げる(?)

タグ:

+ タグ編集
  • タグ:
最終更新:2016年05月13日 06:45