因为图片的宽度问题。 //最大高度 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真机下canvas.toDataURL(),为什么获取不到图片数据?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); 手机型号版本: [图片]
2021-09-02