收藏
回答

canvasToTempFilePath导出图片数据失真

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.canvasToTempFilePath 客户端 7.0.3 2.6.4

- 复现路径:

  1. 使用getCanvasImageData获取Uint8ClampedArray数据,进行处理后使用putCanvasImageData重新绘制。重新绘制后画布的Uint8ClampedArray数据为A

  2. 使用canvasToTempFilePath导出图片,在成功回调中使用getCanvasImageData获取临时文件的数据,为B。

  3. A与B之间的差异在模拟器下可以接受,但在真机环境下失真很严重,如下图


- 截图:

模拟器:



真机(iOS12.1.1):



不知道这个问题能不能改进,还是说运行时环境本身的问题。

最后一次编辑于  04-01  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • Eric Huang
    Eric Huang
    04-04

    把导出的图片draw回canvas能跟原图保持一致吗,大小是否一致?要确保导出的图片跟原图像素一致再进行对比才能反映偏差。

    04-04
    赞同
    回复 3
    • 零式飞翼高达
      零式飞翼高达
      04-04

      复现代码片段中忘设置canvas尺寸了。


      再次检查了下,尺寸是没有问题的,模拟器中导出图片draw回canvas是完全一致的,但是真机中失真很大。

      04-04
      回复
    • Eric Huang
      Eric Huang
      04-08回复零式飞翼高达

      我这边测试看偏差还可以接受,上下 5 左右,应该没有上图显示的 10+ 吧

      04-08
      回复
    • 零式飞翼高达
      零式飞翼高达
      04-08回复Eric Huang

      辛苦。


      因为我是想操作像素的alpha通道数值,但真机上导出后有差异的像素点数量太多了,不能保留正确的alpha通道值。


      具体像素值偏差的话我在测试时的结果不稳定,有时上下5有时10+,感觉这个跟运行时环境关系较大,如果暂时无法优化这个的话只能先不做了..

      04-08
      回复
  • 是柿子啊
    是柿子啊
    04-01

    麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    04-01
    赞同
    回复 1