本帖最后由 Richard.Ma 于 2022-9-5 13:39 编辑
spreadjs区域快照功能目前有很多客户在使用,有时候,我们想要把快照直接保存为图片导出,spreadjs目前也没有直接保存图片方法可以将区域快照转换为图片,但是通过获取到对应的canvas可以这样来转换并导出图片
区域快照对象通过cameraShapeBuffer获取到对应的canvas,再通过toDataURL即可转换为对应格式图片的base64数据,比如下面的代码,转换为了png,然后下载即可
获取到base64数据
- var pngdata=sheet.cameraShapes[0].cameraShapeBuffer.toDataURL('image/png')
复制代码
通过下面的代码可以将上述的base64数据转换为图片
- function base64ToBlob(code) {
- var parts = code.split(";base64,");
- var contentType = parts[0].split(":")[1];
- var raw = window.atob(parts[1]);
- var rawLength = raw.length;
- var uint8Array = new Uint8Array(rawLength);
- for (var i = 0; i < rawLength; i++) {
- uint8Array[i] = raw.charCodeAt(i);
- }
- return new Blob([uint8Array], {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("/")[1]; // 使用时间戳给文件命名
- aLink.href = URL.createObjectURL(blob);
- aLink.click();
复制代码
|
|