webgl在iOS真机下使用canvas.toDataURL()获取的数据是字符串 “data;”,没有图片数据,模拟机和安卓手机都可以获取到图片数据,请问为什么,怎么解决。
<canvas type="webgl" id="webgl" style="width:200rpx; height: 200rpx; position:absolute;" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></canvas>
this.renderer.getContext().canvas.toDataURL("image/png",0.5);
手机型号版本:
ios canvas限制最大分辨率4096,超过toDataURL转换成data:;了
https://www.cnblogs.com/lyxverycool/articles/7792383.html
因为图片的宽度问题。
//最大高度 const maxHeight = 5000 //最大宽度 const maxWidth = 5000 const originHeight = img.height const originWidth = img.width let w = img.width let h = img.height console.log('原始分辨率', w, h) if (originWidth > maxWidth && originHeight > maxHeight) { // 更宽更高, if (originHeight / originWidth > maxHeight / maxWidth) { // 更加严重的高窄型,确定最大高,压缩宽度 h = maxHeight w = maxHeight * (originWidth / originHeight) } else { //更加严重的矮宽型, 确定最大宽,压缩高度 w = maxWidth h = maxWidth * (originHeight / originWidth) } } else if (originWidth > maxWidth && originHeight <= maxHeight) { // 更宽,但比较矮,以maxWidth作为基准 w = maxWidth h = maxWidth * (originHeight / originWidth) } else if (originWidth <= maxWidth && originHeight > maxHeight) { // 比较窄,但很高,取maxHight为基准 h = maxHeight w = maxHeight * (originWidth / originHeight) } else { // 符合宽高限制,不做压缩 } console.log('压缩后分辨率', w, h) // 生成canvas let canvas = document.createElement('canvas') let context = canvas.getContext('2d') canvas.height = h canvas.width = w
把宽高按比例压缩后在进行质量的压缩就不会返回 'data:'
你好,反馈已收到,我们核实下,有进展会同步。
遇到了一样的问题,ios出现问题,代码片段如下
https://developers.weixin.qq.com/s/sdZ8EGmO7Ln9