个人案例
- 粤满意
基于vue开发的记账小程序,未完成
黔e记扫码体验
- 黔东小商超
快速搭建个人小程序,用于视频号卖货,或自己推广
黔东小商超扫码体验
在开发工具没问题可以正常绘制图片, 电脑和手机上就会报错
真机canvasToTempFilePath:fail :create bitmap failed?基础库信息看图,代码片段:https://developers.weixin.qq.com/s/qVtsctm97BVq,记得开启不校验域名 [图片] const drawImageByUrl = (imgData, slef) => { return new Promise((rolve) => { ctx = wx.createCanvasContext('myCanvas', slef); console.log(ctx, 'ctx'); // ctx = Canvas.getContext('2d'); // 开始绘制 const colorList = ['#229241', '#e64032', '#d7aa1c', '#3c8af0', '#f46502', '#99cc75', '#001b30', '#bc1616']; wx.getImageInfo({ src: imgData.img, success: (res) => { const imgWidth = res.width; // 图片原始宽度 const imgHeight = res.height; // 图片原始高度 console.log(res, '图片宽高resres'); // 绘制图片 ctx.drawImage(res.path, 0, 0, imgWidth, imgHeight); if (imgData.locate && imgData.locate.length > 0) { imgData.locate.map((item, idx) => { const color = colorList[idx]; if (item.box && item.box.length > 0) { let x1 = item.box[0], y1 = item.box[1], x2 = item.box[2], y2 = item.box[3]; // x1, y1, x2, (y2 = ((x1 / 1000) * w, (y1 / 1000) * h, (x2 / 1000) * w, (y2 / 1000) * h)); x1 = (x1 / 1000) * imgWidth; y1 = (y1 / 1000) * imgHeight; x2 = (x2 / 1000) * imgWidth; y2 = (y2 / 1000) * imgHeight; const width = x2 - x1, height = y2 - y1; // 画矩形 drawRectangle(x1, y1, width, height, color); // 标注 if (item.ref) drawText(item.ref, x1, y1, color); } }); // setTimeout(() => { // const imgresult = ctx.toDataURL('image/png'); // return { // url: imgresult // } // }, 500); } //输出图片 ctx.draw(false,()=>{ setTimeout(()=>{ wx.canvasToTempFilePath({ canvasId: 'myCanvas', // canvas: ctx, //画布标识,传入 canvas 组件实例 (canvas type="2d" 时使用该属性)。 width: imgWidth, //指定的画布区域的宽度 height: imgHeight, //指定的画布区域的高度 destWidth: imgWidth, //输出的图片的宽度 destHeight: imgHeight, //输出的图片的高度 success: (result) => { var tempFilePath = result.tempFilePath; rolve(tempFilePath) }, fail: function (error) { console.log(error); } }, slef); },500) }) }, fail: function (err) { console.error('Failed to get image info:', err); } }); }) }
11-05