cnpm install html2canvas
import html2canvas from 'html2canvas';
export default class SnappingTool {
static dataURLtoBlob(dataUrl: string): Blob {
let arr = dataUrl.split(",");
let mime: any = arr[0].match(/:(.*?);/)[1] || 'image/octet-stream';
let bStr = atob(arr[1]);
let len = bStr.length;
let u8Arr = new Uint8Array(len);
while (len--) {
u8Arr[len] = bStr.charCodeAt(len);
}
return new Blob([u8Arr], { type: mime });
}
static async snappingMap(snappingEL: HTMLElement, name: string = `地图截图${Date.now()}`) {
const canvas = await html2canvas(snappingEL, {
useCORS: true,
allowTaint: true,
backgroundColor: null,
logging: true,
});
const image = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
const link = document.createElement('a');
const blob = SnappingTool.dataURLtoBlob(image);
const objUrl = URL.createObjectURL(blob);
link.download = `${name}.png`;
link.href = objUrl;
link.click();
}
static async snappingMapBlob(snappingEL: HTMLElement) {
const canvas = await html2canvas(snappingEL, {
useCORS: true,
allowTaint: true,
backgroundColor: null,
logging: true,
});
const image = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
const blob = SnappingTool.dataURLtoBlob(image);
return blob;
}
}
import SnappingTool from '@/utils/SnappingTool'
const dom = document.getElementById('app');
SnappingTool.snappingMap(dom)