寫扣職人
    首頁課程商品文章影片登入 / 註冊
    返回系列
    【前端動手玩創意】不無聊的HTML與CSS指南
    免費

    不無聊的前端切版課:第7章── canvas截圖的招式

    如果你想學網頁,那歡迎你來對地方了。 這個指南手冊除了非常適合新手以外,還超級有趣,絕對靠北又能學到東西。

    切板職人
    1 分鐘
    2025年12月12日

    前情提要

    想在在JavaScript中,用HTML5的Canvas元素來剪取畫面並存成SVG或PNG。

    程式寫法(一)

    首先,需要在HTML中創建一個Canvas元素
    <canvas id="myCanvas"></canvas>

    在JavaScript中,使用canvas.getContext('2d')方法來獲取2D繪圖環境

    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');
    

    使用ctx.drawImage()方法將要剪取的圖片繪製到Canvas上

    var imageObj = new Image();
    imageObj.onload = function() {
      ctx.drawImage(imageObj, 0, 0);
    };
    imageObj.src = 'example.png';
    

    使用canvas.toDataURL()方法將Canvas轉換成SVG或PNG格式的圖片

    // 轉換為SVG
    var svgData = canvas.toDataURL('image/svg+xml');
    // 轉換為PNG
    var pngData = canvas.toDataURL('image/png');
    

    最後,可以將轉換後的圖片下載或顯示出來

    // 下載SVG
    var link = document.createElement('a');
    link.download = 'image.svg';
    link.href = svgData;
    link.click();
    
    // 顯示PNG
    var pngImg = new Image();
    pngImg.src = pngData;
    document.body.appendChild(pngImg);
    

    程式寫法(二)

    使用html2canvas

    點擊放大

    這邊介紹一個用CDN的小訣竅,官網沒有寫:

    <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
    

    接下來把要抓取的元素找到,加上id為capture就可以使用JS:

    html2canvas(document.querySelector("#capture")).then(canvas => {
        document.body.appendChild(canvas)
    });
    

    程式寫法(三)

    使用DOM to IMG

    
    <script src="https://unpkg.com/dom-to-image@2.6.0/dist/dom-to-image.min.js"></script>
    
    function captureScreenshot(element) {
      return new Promise((resolve, reject) => {
        domtoimage.toPng(element)
          .then((dataUrl) => {
            resolve(dataUrl);
          })
          .catch((error) => {
            reject(error);
          });
      });
    }
    
    
    //放到頁面上確認有這個畫面
    captureScreenshot(document.getElementById('dick')).then((value) => {$('<img>').attr('src',value).appendTo($('body'));
    
    }).catch((error) => {
      console.error(error);
    });
    

    這樣會轉成base64然後我用appendTo把他丟到body上面,確認圖片會出來。

    心得

    以上三招都是實用又簡單的方法哦!(,,・ω・,,)
    是不是沒有料到有三招呢,
    寫前端不怕你沒招,只怕你看了招數之後還不趕緊去嘗試搞看看!
    喜歡這系列記得追蹤、收藏唷!

    未來會有更多有趣的API以及小項目的介紹呢!

    0 瀏覽

    留言區

    登入後即可留言

    登入 / 註冊
    返回系列文章
    寫扣職人
    隱私權政策使用者條款購買與退款須知

    專業的線上學習平台,提供高品質課程內容

    © 2026 寫扣職人. All rights reserved.

    Powered by Classroo