9***@qq.com
9***@qq.com
  • 发布:2021-01-22 09:21
  • 更新:2021-01-22 18:08
  • 阅读:726

canvas生成海报图问题,H5可以正常画,App调试画不出来,APP既不报错也不成功。

分类:uni-app

HX版本3.0.5.20210107
代码片段如下:
var myCanvas = ‘’
onReady() {
let that = this
myCanvas = uni.createCanvasContext('posterCanvas', this);
}
myCanvas.drawImage('../../static/images/commonImg/qinduoduoicon.png', 10, parseInt(that.canvasH + 75), 20, 20)
myCanvas.drawImage(this.src, parseInt((that.canvasW - (that.canvasW - 180))/2), parseInt(that.canvasH + 130), that.canvasW - 180, that.canvasH - 180);
// 加文字隐形效果
myCanvas.shadowColor = 'rgba(132,65, 0, 1)';
myCanvas.shadowOffsetX = 1;
myCanvas.shadowOffsetY = 3;
myCanvas.shadowBlur = 2;that.couponPrice
if(that.couponPrice != parseFloat(that.goodsContent.min_group_price/100).toFixed(2)){

                            // 券后价不等于抢购价 有优惠券的时候  
                            myCanvas.setFontSize(10)  
                            myCanvas.fillStyle="#fff";  
                            myCanvas.fillText('券后价¥', 10, parseInt(that.canvasH + 30))  

                            myCanvas.setFontSize(16)  
                            myCanvas.fillStyle="#fff";  
                            myCanvas.fillText(parseFloat(that.couponPrice).toFixed(2), 50, parseInt(that.canvasH + 30))  

                            myCanvas.setFontSize(10)  
                            myCanvas.fillStyle="#fff";  
                            myCanvas.fillText('原价¥' + parseFloat(that.goodsContent.min_group_price/100).toFixed(2), 130, parseInt(that.canvasH + 30))  

                            myCanvas.setFontSize(10)  
                            myCanvas.fillStyle="#fff";   
                            myCanvas.fillText('使用时间:' + that.getBeginTime(that.goodsContent.coupon_start_time) + '~' + that.getEndTime(that.goodsContent.coupon_end_time), 10, parseInt(that.canvasH + 55))  

//以下方法
console.log(myCanvas.draw())打印出undefined
myCanvas.draw(true, () => {
uni.canvasToTempFilePath({
canvasId: 'posterCanvas',
success: (res) => {
// 在H5平台下,tempFilePath 为 base64
// console.log(res.tempFilePath)
that.canvasImgCon = res.tempFilePath;
uni.hideLoading();
},
fail: () => {
uni.showToast({
title: '名片加载失败',
duration: 2000
});
}
});
});

2021-01-22 09:21 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

安卓还是iOS?
本地打包还是在线打包?

  • 9***@qq.com (作者)

    安卓和ios都不行,是用的自定义基座。

    2021-01-25 08:37

  • DCloud_UNI_GSQ

    回复 9***@qq.com: 是不是基座版本和 HBuilderX 不符,重新打包一个基座试试

    2021-01-25 11:08

  • 9***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 早上更新了最新版的HX和重新打基座了也不行,就很奇怪。

    2021-01-25 14:30

  • DCloud_UNI_GSQ

    回复 9***@qq.com: 使用默认基座测试一下

    2021-01-25 16:18

  • 9***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 默认的也不行。

    2021-01-25 16:22

  • DCloud_UNI_GSQ

    回复 9***@qq.com: 测试工程和步骤提供一下,我试试

    2021-01-25 16:45

  • 9***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 刚刚试了,H5的也不行了,这样的话是不是要检查一下写法?

    2021-01-25 17:10

  • DCloud_UNI_GSQ

    回复 9***@qq.com: 也可以先下载一个旧版本的 HBuilderX 试试

    2021-01-25 17:11

  • 9***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 没下旧的测试,myCanvas.draw()打印这个东西是undefined,myCanvas.draw打印这个东西是一个方法,多个括号就undefined这个是怎么回事?

    2021-01-26 09:11

  • 深海智行

    回复 9***@qq.com: 兄弟,括号是执行。。。

    2021-01-26 11:03

  • 9***@qq.com (作者)

    回复 DCloud_UNI_GSQ:解决了,加个延时器跟uni.getImageInfo()网络图片缓存到本地就可以了。

    2021-01-26 15:50

该问题目前已经被锁定, 无法添加新回复