收藏
回答

canvas中使用canvasToTempFilePath导出图片尺寸与实际不符

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.canvasToTempFilePath 微信安卓客户端 7.0.5 2.8.0

使用下面方式导出图片时,设置图片的宽高为300*400,导出后使用getImageInfo获取图片尺寸信息,在真机上获取到的实际尺寸是在设置的基础乘了一个常量(小米8中是2.7左右)

wx.canvasToTempFilePath({
   x: 0,
   y: 0,
   width: 300,
   height: 400,
   canvasId: 'canvas',
   quality: 1,
   success: res => {
     wx.getImageInfo({
       src: res.tempFilePath,
       success: info => {
         console.log(info.width)
         console.log(info.height)
       }
     })
   }
 })

实际上console出来图的尺寸比设定的300*400要大,乘了一个常量,这个是什么原因?为什么会有一个常量?作用是什么?常量的定义是根据系统默认设置的还是手机分辨率不同设置的?

回答关注问题邀请回答
收藏

3 个回答

  • 素朴网联
    素朴网联
    2019-09-12

    问题解决了吗?是pixelRatio的问题吧?

    2019-09-12
    有用 1
    回复 3
    • 跷跷板
      跷跷板
      2019-10-08
      嗯嗯,是这个问题
      2019-10-08
      1
      回复
    • 舒克暖暖
      舒克暖暖
      2020-04-10回复跷跷板
      请问下,您那边导出的图片的文件大小被放大了没?我这边像素宽高是与原图一致了 但是文件大小被放大了好多
      2020-04-10
      回复
    • huigezizj
      huigezizj
      2020-04-27回复跷跷板
      那要怎么处理呢
      2020-04-27
      回复
  • 柠檬茶
    柠檬茶
    2021-03-03

    destWidth: newcanvasWidth * 750 / wx.getSystemInfoSync().windowWidth,

    destHeight: newcanvasheight * 1100 / wx.getSystemInfoSync().windowHeight,

    加上这两句试试。

    2021-03-03
    有用
    回复
  • 灵芝
    灵芝
    2019-07-31

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

    2019-07-31
    有用
    回复 7
    • 跷跷板
      跷跷板
      2019-08-04
      代码片段:https://developers.weixin.qq.com/s/8aROzmmu7ia5
      2019-08-04
      回复
    • 跷跷板
      跷跷板
      2019-08-04
      机型:小米8;微信版本号:7.0.5,得到的结果乘了一个2.75的常量
      2019-08-04
      回复
    • 灵芝
      灵芝
      2019-08-09回复跷跷板

      wx.canvasToTempFilePath()需要在draw()回调中使用的哈


      2019-08-09
      回复
    • 跷跷板
      跷跷板
      2019-08-10回复灵芝
      是在draw的回调中使用的呀
      2019-08-10
      回复
    • 李岩
      李岩
      2020-04-24回复灵芝
      请问新版canvas也需要在draw()回调中使用吗?
      2020-04-24
      回复
    查看更多(2)
登录 后发表内容