canvasToTempFilePath导出图片数据失真
发布于 6 年前 作者 weiyu 13272 次浏览 来自 问答
  • 复现路径:
  1. 使用getCanvasImageData获取Uint8ClampedArray数据,进行处理后使用putCanvasImageData重新绘制。重新绘制后画布的Uint8ClampedArray数据为A

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

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

  • 截图:

模拟器:

真机(iOS12.1.1):

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

3 回复

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

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

即便输出和原图宽高一致,图片的大小几乎和原图一样;调整宽高是原图的3倍,文件几乎是源文件的3倍大,可是对于清晰度来讲根本没用。最后发现图片的dpi被修改了,原图的dip是300,canvas导出的图片dpi是96。怎么可能清晰呢?不明白这个dpi修改的机制和原理?有懂得人给科普下呗。。。

回到顶部