收藏
回答

uni.canvasToTempFilePath 画布保存成图片部分机型会出现空白?是什么原因?

使用uni.canvasToTempFilePath 绘制图片,部分机型会出现空白,ios出现率高,第一次生成图片的时候显示空白,偶尔会出现截取图片部分展示,再次上传图片会展示正常,各位大佬们有遇到过吗?怎么解决的?

上传图片白屏;

在开发没复现,都是在用户那边报的。提供了几个账号图片也没复现。

ctxs.draw(
    false,
    setTimeout(() => {
      uni.canvasToTempFilePath(
          {
            canvasId: _this.canvasId,
            fileType: "jpg",
            width: originWidth,
            height: originHeight,
            quality: 1,
            success: (res) => {
              let isTempFilePath = res.tempFilePath;
              resolve(res.tempFilePath)
              uni.getFileInfo({
                filePath:res.tempFilePath,
                success:imgInfo => {
                  console.log(imgInfo.size, 'quality 前 图片大小sizesize');
                    uni.compressImage({
                      src: isTempFilePath, // 图片路径
                      quality: 1, // 图片压缩质量,0~100,默认80,仅对jpg有效 
                      success: res => {
                        if (index == 1) {
                          let type = 0
                          if(this.role == 4 ||this.role == 8){
                            type = 1
                          }
                          uploadimg(type, res.tempFilePath).then(rps => {
                            this.zhuanghuoimglist.push(rps.message)
                          })
                        }else if (index == 2){
                          uploadimg(type, res.tempFilePath).then(rps => {
                            this.danjuimglist.push(rps.message)
                          })
                        }
                    })
                  }
                  }

                } })
            },
            fail: (err) => {
              console.log(err)
            },
            complete: () => {
              uni.hideLoading()
            }
          },
          that
      )
    }, 1000)
)
回答关注问题邀请回答
收藏

3 个回答

  • 海拉鲁机车队长
    海拉鲁机车队长
    2024-12-09
    uni.compressImage({
      src: src,
      quality: 30,
      width: '40%',
      height:'40%',
      success: res2 => {
     // 获取图片信息,配置 canvas 尺寸
      uni.getImageInfo({
        src: res2.tempFilePath,
        success: res => {
          // canvas的相关操作
           ......
        },
     // ios环境在压缩后就不会出现白色图片问题了,应该是ios对于canvas有限制
    
    2024-12-09
    有用 1
    回复
  • 这样看着你
    这样看着你
    2023-02-15

    你的 canvasId对应canvas的height、width ,设置1024以下试一试。

    我是设置之后就成功了。

    2023-02-15
    有用 1
    回复 2
    • 这样看着你
      这样看着你
      2023-02-15
      我直接就没设置,使用的默认值。
      2023-02-15
      回复
    • 门门
      门门
      2023-02-15回复这样看着你
      前端处理了一下图片比例缩放。好的,我试一下
      2023-02-15
      回复
  • H1HAO 🇨🇳
    H1HAO 🇨🇳
    2023-02-13
    每次绘制的时候都把res.tempFilePath单独复制出来看下是不是空白,如果是空白就是绘制过程太多,延迟放长点试试
    
    
    2023-02-13
    有用
    回复 4
    • 门门
      门门
      2023-02-13
      好的,本地问题没复现,用户反馈的,我延迟放长一点试试;
      2023-02-13
      回复
    • 屁丁
      屁丁
      2023-03-31
      您好,我的是用画布实现签名,开发者工具怎么画都没问题,但是真机和上线后,频繁出现画了的图片空白的问题,这个应该怎么解决呢
      2023-03-31
      回复
    • H1HAO 🇨🇳
      H1HAO 🇨🇳
      2023-04-03回复屁丁
      导出后有个临时本地地址,先看看是否有内容,如果没内容就在导出的时候加个延时在看看
      2023-04-03
      回复
    • HYPER
      HYPER
      2023-07-19回复H1HAO 🇨🇳
      我加了一秒延时了,生成的图片还是空白的
      2023-07-19
      回复
登录 后发表内容