收藏
回答

基于Base64编码来创建image对象,在开发者工具中运行正常,为什么在Mac端预览就不正常了?

报错信息如下:image load error {"stack": "Error: The source image could not be decoded."}。

相关代码如下:

       // 创建Image对象(小程序特有方式)
        const img = canvas.createImage()
        
        img.onload = () => {
           //TODO: 调用ctx.drawImage来绘制图片
        }
        
        img.onerror = (err) => {
          console.error('图片加载失败:', err)
        }
        
        //简化版的svg的内容
        const simpleSvgUrl = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzY5NTY2NjQ4Nzc4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDE3ODcgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ4NjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMzQ5LjAyMzQzNzUiIGhlaWdodD0iMjAwIj48cGF0aCBkPSJNMTE3NS4wODQ2MzYgMjkyLjMyMTM2OEgxMzguODMxNjQ0YTE0MS43ODQ2MTUgMTQxLjc4NDYxNSAwIDAgMS0xMDEuNTI0Nzg2LTQ5LjAxMTk2NkExNDcuMDM1ODk3IDE0Ny4wMzU4OTcgMCAwIDEgMTM1LjMzMDc5IDBoMTUwMy42MTcwOTRhMTQ4Ljc4NjMyNSAxNDguNzg2MzI1IDAgMCAxIDEwMy4yNzUyMTMgNDIuMDEwMjU2IDE0Ny4wMzU4OTcgMTQ3LjAzNTg5NyAwIDAgMSA0My43NjA2ODQgMTA1LjAyNTY0MSAxNDguNzg2MzI1IDE0OC43ODYzMjUgMCAwIDEtMTQ3LjAzNTg5NyAxNDcuMDM1ODk4eiIgZmlsbD0iIzY2NjY2NiIgcC1pZD0iNDg2MiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMTc1LjA4NDYzNiAxMDIyLjI0OTU3M0gxMzguODMxNjQ0YTE0MS43ODQ2MTUgMTQxLjc4NDYxNSAwIDAgMS0xMDEuNTI0Nzg2LTQ5LjAxMTk2NiAxNTAuNTM2NzUyIDE1MC41MzY3NTIgMCAwIDEtMzYuNzU4OTc0LTExMi4wMjczNTEgMTQ4Ljc4NjMyNSAxNDguNzg2MzI1IDAgMCAxIDEzNC43ODI5MDYtMTM2LjUzMzMzM2gxNTAzLjYxNzA5NGExNDguNzg2MzI1IDE0OC43ODYzMjUgMCAwIDEgMTAzLjI3NTIxMyA0Mi4wMTAyNTYgMTQ1LjI4NTQ3IDE0NS4yODU0NyAwIDAgMS0xMDMuMjc1MjEzIDI1MC4zMTExMTJ6IiBmaWxsPSIjNjY2NjY2IiBwLWlkPSI0ODYzIj48L3BhdGg+PC9zdmc+';

        // 提取纯 base64 部分
        const base64Content = simpleSvgUrl.split(',')[1];

         // 写入临时文件
        const fs = wx.getFileSystemManager();
        const filePath = `${wx.env.USER_DATA_PATH}/temp_${Date.now()}.svg`;
        
        fs.writeFile({
          filePath: filePath,
          data: base64Content,
          encoding: 'base64',
          success: () => { 
            //设置临时路径给image对象
            img.src = filePath ;
          },
          fail: (err)=>{ console.log( err )}
        });
回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    01-28
    有用
    回复
登录 后发表内容