华为mate 10,大图片在canvas上显示和导出都不正常
发布于 6 年前 作者 fang71 7792 次浏览 来自 问答

现象:

从相册里选一张大图,10M以上,先用drawImage在canvas上画成一张物理像素为2k的图,立即调draw,再在draw里回调,通过canvasToTempFilePath导出文件路径,然后通过saveImageToPhotosAlbum保存到相册。canvas显示不出,相册里的图也显示不出。(非必现)

分析原因:

怀疑

1、drawImage是同步方法,drawImage执行完以后,立马调用draw时,其实图还没有完全画在位图上

2、canvasToTempFilePath成功回调时,图片文件并没有完全生成。因此在用saveImageToPhotosAlbum保存到相册时,就保存了一个没有完全写入的图片文件。

理由;

1、用性能较好的手机,比如:小米8做实验。发现有时能成功,

2、在drawImage后延迟一段时间再调用draw,就可能画出来


PS:已经根据这里的方案对drawImage设置成宽高时将物理像素改成了逻辑像素

https://developers.weixin.qq.com/community/develop/doc/87d5a3069f7088479aced91be0620bbc

1 回复

使用大图对性能较低的手机会存在比较慢的问题,建议了使用小一点的图片试下

回到顶部