实现思路
核心代码
const getBase64 = (img: RcFile, callback: (url: string) => void) => {
const reader = new FileReader();
reader.addEventListener('load', () => callback(reader.result as string));
reader.readAsDataURL(img);
};
这个功能依赖了moveable这个插件
<Moveable
target={target}
container={null}
flushSync={flushSync}
edge={false}
draggable={true}
throttleDrag={0}
snappable={true}
snapCenter={true}
origin={false}
resizable={true}
throttleResize={0}
rotatable={true}
rotationAtCorner={false}
scrollable={true}
pinchable={true}
/>
图层用了简单的实现方式,用css的zindex来粗暴的进行实现
const clipImgBase64: any = canvas.toDataURL(); // 生成图片url
const link: any = document.createElement('a');
link.href = clipImgBase64; //下载链接
link.setAttribute('download', new Date().toLocaleString() + 'sf_截图.png');
link.style.display = 'none'; //a标签隐藏
document.body.appendChild(link);
link.click(); // 点击下载
document.body.removeChild(link); // 移除a标签
正在开发,使用gif.js进行渲染导出