- canvasToTempFilePath部分ios手机导出图片裁剪?
真机截图(正常): [图片] iphone 7中截图(图片发生了裁剪): [图片] 核心代码片段(具体见代码片段:https://developers.weixin.qq.com/s/fUJ4d3m17UxT): <view class="page"> <canvas type="2d" style="width:{{canvasWidth}}px;height:{{canvasHeight}}px;" id="myCanvas" class="myCanvas" ></canvas> <image src="{{imageSrc}}" mode="widthFix"></image> </view> const app = getApp() Page({ data: { imageSrc: "", canvasWidth: '', canvasHeight: '', imageSrc:"" }, onLoad: async function () { let imageSrc = './1.jpg'; let imageInfo = await this.getImageInfo(imageSrc); let r = 2.165914247136675; let canvasWidth = Math.abs(imageInfo.width / r); let canvasHeight = Math.abs(imageInfo.height / imageInfo.width*canvasWidth); this.setData({ canvasWidth, canvasHeight },async ()=>{ let { canvas, context } = await this.initCanvas('#myCanvas', 1); let img = await this.createImage(canvas, imageSrc); context.drawImage(img, 0, 0, imageInfo.width, imageInfo.height, 0, 0, canvasWidth, canvasHeight) let src = await wx.canvasToTempFilePath({ x: 0, y: 0, width:canvasWidth, height:canvasHeight, destWidth:canvasWidth, destHeight:canvasHeight, canvas, success:(res)=>{ this.setData({ imageSrc:res.tempFilePath }) } }) }) }, getImageInfo(src) { return new Promise(async (resolve, reject) => { wx.getImageInfo({ src, success: (result) => { resolve(result); }, fail: (e) => { reject(e); } }); }); }, initCanvas(selector, dpr) { return new Promise((resolve, reject) => { wx.createSelectorQuery() .select(selector) .fields({ node: !0, size: !0 }) .exec((res) => { let canvasWidth = res[0].width; let canvasHeight = res[0].height; let canvas = res[0].node; let context = canvas.getContext('2d'); canvas.width = canvasWidth * dpr; canvas.height = canvasHeight * dpr; context.scale(dpr, dpr); resolve({ context, canvas, canvasWidth, canvasHeight }); }); }); }, createImage(ctxNode, imageSrc) { return new Promise((resolve, reject) => { const img = ctxNode.createImage(); img.src = imageSrc; img.onload = () => { resolve(img); }; }); } }) drawImage这一步是正常的,就是canvasToTempFilePath的时候发生了裁剪
2022-02-14 - canvasToTempFilePath导出图片被裁剪?
微信版本: 8.0.18 基础库:2.16.1 机型:Iphone 13 pro max、iPhone 7 可复现的代码片段:https://developers.weixin.qq.com/s/tZmC1Wm57rwO canvasToTempFilePath导出图片被裁剪 [图片] 真机和安卓测试正常: [图片] 视频地址: 链接:https://pan.baidu.com/s/1sm1vtw5XbbCraovbSoWBsQ 提取码:79si 视频中是用IPhone 7进行测试,多次点击了重新打开小程序,最后一次操作时,发生了裁剪。
2022-02-10 - canvasToTempFilePath后导出图片被裁剪(线上部分机型发现此问题)?
线上部分机型发现有此问题:如Nova 6 5G,由于手上没真机没验证。 // 初始化canvas let canvasWidth = res[0].width; let canvasHeight = res[0].height; let canvasNode = res[0].node; canvasNode.width = canvasWidth * dpr; canvasNode.height = canvasHeight * dpr; ctx.scale(dpr,dpr) // 绘制图片 img就是下面的原图 ctx.drawImage(img,0,0,canvasWidth,canvasHeight) //导出图片 mwx.canvasToTempFilePath({ canvas: canvasNode, x: 0, y: 0, width: canvasWidth, height: canvasHeight, destWidth: canvasWidth * dpr, destHeight: canvasHeight * dpr }); 线上收集导出的图片数据时,发现存在部分机型导出的图片被裁剪了 这个是原图,会通过drawImage话到canvas上。canvas的会按照原图的比例进行初始(计算时存在小数,所以2者并不完全相等) [图片] 下面是canvas导出的图片 [图片] 从结果图看出,由于执行了ctx.scale,绘制图片时放大了,但导出图片时还是按照原canvas比例(未执行scale)。 目前线上只发现少部分机型存在此问题
2021-12-31 - 实验工具AB测试,getExptInfoSync无法获取到参数?
已经创建了实验(未发布),但是本地开发者工具调用getExptInfoSync返回空对象。 基础库2.16.1 开发者工具是最新版本的
2021-12-08 - 激励广告报错updateVideoPlayer:fail:got 'null'?
百分百复现的流程: 页面A创建激励广告,广告播放完毕后跳转B页面。B页面按返回键返回A页面,此时A页面再此调用wx.createRewardedVideoAd创建激励广告时,即不会执行onLoad回调,也不会执行onError回调。 查阅了一些资料说是:需要在页面切换时销毁激励广告实例。但实际测试,调用激励广告实例的destroy,并且设置激励广告实例为null,仍然无效。
2021-10-27 - canvasPutImageData: fail canvas is empty?
代码片段: https://developers.weixin.qq.com/s/mQtSZamP73uh [图片]
2021-10-19 - 如何将wx.createOffscreenCanvas的数据 写入到canvas组件?
如何将wx.createOffscreenCanvas的数据 写入到canvas组件? 想用离屏canvas做缓存,但是小程序的drawImage并不支持直接传入canvas对象
2021-08-25 - wx.getUserInfo返回未授权?
4.13以后 ,期望wx.getUserInfo能够直接获取匿名数据,但是现在发现直接返回 getUserInfo:fail scope unauthorized 。 [图片] 设置的最低基础库是2.12.2。 不是,之前公告是4.13,现在又调整至4.28。4.28号以前还是用之前的授权逻辑?
2021-04-23 - 聊天素材打开小程序体验版(有缓存)?
目前只用了体验版进行测试,2张不同的聊天素材图片 打开小程序时 ,通过打印看到wx.getLaunchOptionSync()获取到的数据是一样的 不知道正式版是不是有此问题
2021-04-23 - 小程序登录授权调整的问题?
官方公告: https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?token=838205899&lang=zh_CN [图片] 根据公告,调用wx.getUserInfo将直接获取(encryptedDatad等)用户个人信息。 问题是: 我现在调用wx.getUserinfo,并没有返回用户个人信息。 还是返回errMsg":"getUserInfo:fail scope unauthorized" 4/13号以前能够调试公告中的修改内容吗
2021-03-12