Richard.Ma 发表于 2022-9-5 13:37:53

spreadjs区域快照转换为图片

本帖最后由 Richard.Ma 于 2022-9-5 13:39 编辑

spreadjs区域快照功能目前有很多客户在使用,有时候,我们想要把快照直接保存为图片导出,spreadjs目前也没有直接保存图片方法可以将区域快照转换为图片,但是通过获取到对应的canvas可以这样来转换并导出图片

区域快照对象通过cameraShapeBuffer获取到对应的canvas,再通过toDataURL即可转换为对应格式图片的base64数据,比如下面的代码,转换为了png,然后下载即可

获取到base64数据
var pngdata=sheet.cameraShapes.cameraShapeBuffer.toDataURL('image/png')

通过下面的代码可以将上述的base64数据转换为图片
function base64ToBlob(code) {
            var parts = code.split(";base64,");
            var contentType = parts.split(":");
            var raw = window.atob(parts);
            var rawLength = raw.length;
            var uint8Array = new Uint8Array(rawLength);
            for (var i = 0; i < rawLength; i++) {
                uint8Array = raw.charCodeAt(i);
            }
            return new Blob(, {type: contentType});
      }

下载图片,传入上面返回的imgUrl
var aLink = document.createElement("a"); // 创建一个a标签
                var blob = base64ToBlob(imgUrl);
                var event = document.createEvent("HTMLEvents");
                event.initEvent("click", true, true);
                aLink.download = date.getTime() + "." + blob.type.split("/"); // 使用时间戳给文件命名
                aLink.href = URL.createObjectURL(blob);
                aLink.click();





FzcSuiY 发表于 2022-9-17 14:44:20

本帖最后由 FzcSuiY 于 2022-9-17 14:47 编辑

您好!V15版本我试了一下 cameraShapeBuffer不知道为什么为undefined??麻烦解惑! 官网中文API里面也查不到cameraShapes和cameraShapeBuffer

Richard.Ma 发表于 2022-9-19 12:07:42

你先看一下sheet.cameraShapes获取到的cameraShape对象是否存在,如果本身没有快照,自然无法获取cameraShapeBuffer


FzcSuiY 发表于 2022-9-19 13:18:55

我添加了一个快照 ,cameraShapeBuffer还是无法获取

Richard.Ma 发表于 2022-9-19 16:47:22

建议您可以新发一个帖子,附上能重现问题的demo。我帮你看看原因
页: [1]
查看完整版本: spreadjs区域快照转换为图片