bug
最近在做需求的时候,需要自行把生成图片,自然而然的用到了canvas.toDataURL这个api来生成base64的图片。
但是在实际测试过程中,却发现在某些ios手机中,无论是safari还是微信环境,都无法正常生成base64内容,而只是生成”data:,”就结束了。但出问题的设备环境,无论是ios版本号还是iphone手机型号,都比较随机。
debug
经过调试,发现当更改canvas画布的高度尺寸,设置高度<1500时,就正常生成图片了,但是>1500就有问题。
查找资料和做试验发现,所有浏览器都对canvas画布尺寸有一定的宽高限制,都超过这个尺寸时,生成canvas就图裂了(如下图↓),自然也无法生成base64。
大家可以在pc的chrome里打开如下代码试一下:
1 | var canvas = document.createElement("canvas"); |
看来,ios的safari对宽高的限制要求比较高。
fix
如此一来,我们的解决方案就是限制canvas画布的宽高尺寸,而且不能丢失图片的内容,那就只能用缩放手段了。解决方案大致如下:
1 | var canvas = document.createElement("canvas"); |