收藏
回答

鸿蒙 P70 canvas.createImage 设置 base64 Data URI 失败

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug HarmonyOS 5.1.0 HUAWEI Mate 70 1.0.9
async drawMainImage(ctx: CanvasContext, canvas: Canvas, width: number): Promise {
    const padding = POSTER_CONSTANTS.PADDING;
    const imageWidth = width - padding * 2;
    const imageHeight = imageWidth * POSTER_CONSTANTS.IMAGE_HEIGHT_RATIO;
    return new Promise((resolve, reject) => {
        const img = canvas.createImage();
        img.onload = () => {
            const drawX = padding;
            const drawY = padding;
            const drawWidth = imageWidth;
            const drawHeight = imageHeight;


            // 保存当前上下文状态
            ctx.save();


            // 创建圆角路径并设置裁剪区域
            const radius = this.data.mainImageRadius || POSTER_CONSTANTS.MAIN_IMAGE_RADIUS;
            this.drawImageRoundedRect(ctx, drawX, drawY, drawWidth, drawHeight, radius);
            ctx.clip();


            // 绘制图片
            ctx.drawImage(img, drawX, drawY, drawWidth, drawHeight);


            // 恢复上下文状态
            ctx.restore();


            // 计算主图底部位置,用于绘制底部信息
            const mainImageBottom = drawY + drawHeight;


            resolve(mainImageBottom);
        };
        img.onerror = () => reject(new Error('图片加载失败'));
        img.src = this.data.imageUrl;
    });
}


最后一次编辑于  08-14
回答关注问题邀请回答
收藏

2 个回答

  • 匠心
    匠心
    08-14

    将 Base64 保存为本地文件是可以绘制成功的,但是将 canvas 用 wx.canvasToTempFilePath API 导出图片,用 showShareImageMenu 无法正常展示。


    08-14
    有用
    回复 2
    • R.M
      R.M
      08-19
      一样问题,想问下现在解决了吗
      08-19
      回复
    • 匠心
      匠心
      08-22回复R.M
      我看升级到最新版本就可以了
      08-22
      回复
  • 智能回答 智能回答 本次回答由AI生成
    08-14
    有用
    回复
登录 后发表内容