【问题标题】:Cannot save big canvas as image [duplicate]无法将大画布保存为图像[重复]
【发布时间】:2018-07-18 07:10:04
【问题描述】:

美好的一天。我使用以下代码将画布保存到本地图像文件。

let canvas = document.createElement('canvas');
canvas.width = "1056";
canvas.height = "1248"; 
document.body.appendChild(canvas);//in case of debug
rasterizeHTML.drawHTML(document.getElementById("canvas").outerHTML, canvas).then(function() {
    date = new Date();
    let a = document.createElement('a');
    let bitmap = canvas.toDataURL("image/png");
    a.href = bitmap.replace("image/png", "image/octet-stream");
    a.download = "canvas " + date.valueOf()+'.png';
    a.click();
});

在画布高度达到 1k 之前它运行良好,之后生成的文件停止加载并出现错误,文件名也损坏。什么可能出错?请注意,保存适用于小图像(如 500x500 或 700x900)。画布渲染适用于我设置的任何分辨率,我可以通过附加图像看到它。

【问题讨论】:

    标签: javascript html canvas save


    【解决方案1】:

    你能发布更多你的代码吗?它在这个 sn-p 中对我有用。

    var size = 2000;
    
    const canvas = document.getElementById('c');
    var c = canvas.getContext('2d');
    canvas.width = size;
    canvas.height = size;
    canvas.style.width  = size+'px';
    canvas.style.height = size+'px';
    
    // fill canvas with color
    c.fillStyle = '#123456';
    c.fillRect(0, 0, size, size);
    
    const save = document.getElementById('save');
    save.onclick = saveCanvas;
    function saveCanvas() {
      try {
        var date = new Date();
        const a = document.createElement('a');
        const bitmap = canvas.toDataURL("image/png");
        a.href = bitmap.replace("image/png", "image/octet-stream");
        a.download = "canvas " + date.valueOf() + '.png';
        a.click();
      } catch (ex) {
        alert(ex);
      }
    }
    <a id="save" href="#">save</a>
    <canvas id="c"></canvas>

    【讨论】:

    • 我澄清了这个问题。没有太多的新代码,我把我所有的都放在这里了。
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2023-03-23
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多