X6
X6 copied to clipboard
绘制大量节点后,导出图片会报错: size exceeded
问题描述
绘制大量节点后,导出图片会报错: size exceeded,报错的源码部分是什么含义呢
重现链接
1
重现步骤
绘制大量节点后,导出图片会报错: size exceeded,报错的源码部分是什么含义呢
预期行为
绘制大量节点后,导出图片不报错
平台
- 操作系统: [macOS, Windows, Linux, React Native ...]
- 网页浏览器: [Google Chrome, Safari, Firefox]
- X6 版本: [1.28.2 ... ]
屏幕截图或视频(可选)
补充说明(可选)
No response
我觉得是canvas生成图片时,调用getImageData()未获取对应坐标的图像像素数据,getImageData().data返回的Uint8ClampedArray其中一个为0,导致进入了判断,抛出了错误size exceeded
还有一种可能是图片的宽高超过出画布的宽高,获取不到对应的图像数据
这部分代码看着像是在画布末尾添加了个1像素的色块,可能是通过这个色块是否正常来判断浏览器显存是否满了?
还有一个问题,大量元素导出图片后,即使把quality设为1,图片还是超级模糊
我在本地测试,添加了2万个node,可以正常导出图片,可以发一个你的报错的简单demo吗?我复现定位一下问题🥲🥲 @damnright
我在本地测试,添加了2万个node,可以正常导出图片,可以发一个你的报错的简单demo吗?我复现定位一下问题🥲🥲 @damnright
这个问题是偶现的,在部分电脑上会出现卡死报错,即使不报错,执行时间也很久。画布的数据比较复杂,一方面是节点多,另一方面有很多base64图片节点、vue节点,节点间互相嵌套层级也有很多层。画布图元多了,图片就非常模糊
图片模糊可以通过增大配置中的 width 和 height 来优化。