【问题标题】:Saving Three.js Canvas as image将 Three.js Canvas 保存为图像
【发布时间】:2021-08-01 08:03:12
【问题描述】:

我们有一个使用 three.js 画布的 Carport Designer。我想放置一个下载按钮来将绘图捕获为图像。我该怎么做?我读了很多东西,但我什么都不懂。

提前致谢!

编辑:

这最终对我有用;

我必须将 preserveDrawingBuffer 更改为 true。

html

<button id="save">Download Image</button>
<script> document.getElementById('save').onclick=()=>{ saveImage() } function saveImage() { const canvas = document.getElementsByTagName("canvas")[0] const image = canvas.toDataURL("image/png"); const a = document.createElement("a"); a.href = image.replace(/^data:image\/[^;]/, 'data:application/octet-stream'); a.download="image.png" a.click(); } </script>

【问题讨论】:

    标签: image three.js render


    【解决方案1】:

    你可以通过canvas.toDataURL创建一个图片对象然后下载:

    <!-- html -->
    <canvas id="canvas"></canvas>
    <button id="btn-download">Download</button>
    
    // javascript
    const downloadButton = document.getElementById('btn-download');
    const canvas = document.getElementById('canvas');
    
    downloadButton.addEventListener('click', downloadScreenshot);
    
    function downloadScreenshot() {
      const screenshot = canvas.toDataURL("image/png");
      
      let a = document.createElement('a');
      a.href = screenshot;
      a.download = "screenshot.png";
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
    }
    

    【讨论】:

    • 一直在玩代码,现在我将它保存为正确的大小,但背景为黑色......仍然不知道:/
    • 这对我有用。 document.getElementById('save').onclick=()=>{ saveImage() } function saveImage() { const canvas = document.getElementsByTagName("canvas")[0] const image = canvas.toDataURL("image/png "); const a = document.createElement("a"); a.href = image.replace(/^data:image\/[^;]/, 'data:application/octet-stream'); a.download="carport.png" a.click(); }
    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多