• JS API 列表
  • 基础
  • TTML
  • 网络
  • 媒体
  • 地图
  • 文件
  • 数据缓存
  • 地理位置
  • 设备
  • 画布
  • V1
  • tt.createCanvasContext
  • tt.canvasToTempFilePath
  • CanvasContext
  • CanvasGradient
  • CanvasColor
  • V2
  • 界面
  • 页面导航
  • 开放接口
  • 行业开放
  • 第三方平台
  • 其它
  • tt.canvasToTempFilePath
    收藏
    我的收藏

    注意:该接口已停止维护,建议使用Canvas 组件 V2
    基础库 1.0.0 版本开始支持
    警告
    此接口将逐步废弃,后续不再维护,请及时修改下线,避免影响小程序使用。
    替代方案:请使用 Canvas V2 的 toDataURL 方法获取图片展示的 data URI。
    如需下载到临时目录,请自行将 data URI 调用 fileSystemManager.writeFile 下载(encoding: 'base64')。
    把当前画布指定区域的内容导出生成指定大小 png 格式的图片,并返回文件路径。在 CanvasContext.draw 回调里调用该方法才能保证图片导出成功。

    语法

    tt.canvasToTempFilePath(options)

    参数说明

    options 为 object 类型,属性如下:
    属性名
    类型
    默认值
    必填
    说明
    最低支持版本
    canvasId
    string
    画布标识,传入 canvas 组件的 canvas-id 属性
    1.0.0
    x
    number
    0
    指定的画布区域的左上角横坐标
    1.0.0
    y
    number
    0
    指定的画布区域的左上角纵坐标
    1.0.0
    width
    number
    canvas 宽度 -x
    指定的画布区域的宽度
    1.0.0
    height
    number
    canvas 高度 -y
    指定的画布区域的高度
    1.0.0
    destWidth
    number
    width
    输出的图片的宽度
    1.0.0
    destHeight
    number
    height
    输出的图片的高度
    1.0.0
    success
    function
    接口调用成功的回调
    1.0.0
    fail
    function
    接口调用失败的回调
    1.0.0
    complete
    function
    接口调用结束的回调函数(调用成功、失败都会执行),回调参数同成功或失败回调
    1.0.0
    fileType
    string
    png
    图片类型: png / jpg。如果指定了无效的类型则认为是 png
    2.26.0
    quality
    number
    1
    图片质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1 处理
    2.26.0

    回调成功

    object 类型,属性如下:
    属性
    类型
    说明
    最低支持版本
    errMsg
    string
    "canvasToTempFilePath:ok"
    1.0.0
    tempFilePath
    string
    生成文件的临时路径 (本地路径),图片格式为 png
    1.0.0

    回调失败

    object 类型,属性如下:
    属性
    类型
    说明
    最低支持版本
    errMsg
    string
    "canvasToTempFilePath:fail " + 详细错误信息
    1.0.0

    代码示例

    【代码示例 1】手动调用:
    <!-- index.ttml --> <canvas canvas-id="myCanvas" /> <button type="primary" bindtap="canvasToTempFilePath"> canvasToTempFilePath </button> <image src="{{src}}"></image>
    // index.js Page({ data: { src: "", }, onLoad() { const ctx = tt.createCanvasContext("myCanvas"); ctx.lineWidth = 10; ctx.strokeRect(75, 140, 150, 110); ctx.fillRect(130, 190, 40, 60); ctx.beginPath(); ctx.moveTo(50, 140); ctx.lineTo(150, 60); ctx.lineTo(250, 140); ctx.closePath(); ctx.stroke(); ctx.draw(); }, canvasToTempFilePath() { tt.canvasToTempFilePath({ x: 0, y: 0, width: 300, height: 225, destWidth: 300, destHeight: 225, canvasId: "myCanvas", success: (res) => { this.setData({ src: res.tempFilePath, }); tt.showModal({ title: "图片路径", content: JSON.stringify(res.tempFilePath), }); }, }); }, });
    【代码示例 2】在 draw 中使用:
    <!-- index.ttml --> <canvas canvas-id="myCanvas" /> <button type="primary" bindtap="canvasToTempFilePath"> canvasToTempFilePath </button> <image src="{{src}}"></image>
    // index.js Page({ data: { src: "", }, onLoad() { const ctx = tt.createCanvasContext("myCanvas"); ctx.lineWidth = 10; ctx.strokeRect(75, 140, 150, 110); ctx.fillRect(130, 190, 40, 60); ctx.beginPath(); ctx.moveTo(50, 140); ctx.lineTo(150, 60); ctx.lineTo(250, 140); ctx.closePath(); ctx.stroke(); ctx.draw(false, () => { this.canvasToTempFilePath(); }); }, canvasToTempFilePath() { tt.canvasToTempFilePath({ x: 0, y: 0, width: 300, height: 225, destWidth: 300, destHeight: 225, canvasId: "myCanvas", success: (res) => { this.setData({ src: res.tempFilePath, }); tt.showModal({ title: "图片路径", content: JSON.stringify(res.tempFilePath), }); }, }); }, });

    Bug & Tip

      Tip:width、height、destWidth 和 destHeight 指定的数值如果是浮点数(比如 100.2),部分 IOS 系统导出图片异常。建议通过 Math.floor 等方法预处理。