百度智能小程序 畫布內(nèi)容導(dǎo)出生成圖片

2020-09-05 14:21 更新

swan.canvasToTempFilePath

解釋:把當(dāng)前畫布指定區(qū)域的內(nèi)容導(dǎo)出生成指定大小的圖片,并返回文件路徑。在自定義組件下,第二個(gè)參數(shù)傳入組件實(shí)例this,以操作組件內(nèi)<canvas/>組件。

方法參數(shù)

Object object

object 參數(shù)說(shuō)明

屬性名類型必填默認(rèn)值說(shuō)明

x

Number

0

指定的畫布區(qū)域的左上角橫坐標(biāo)

y

Number

0

指定的畫布區(qū)域的左上角縱坐標(biāo)

width

Number

canvas 寬度 -x

指定的畫布區(qū)域的寬度

height

Number

canvas 高度 -y

指定的畫布區(qū)域的高度

destWidth

Number

width * 屏幕像素密度

輸出圖片寬度

destHeight

Number

height * 屏幕像素密度

輸出圖片高度

canvasId

String

畫布標(biāo)識(shí),傳入<canvas/>的 canvas-id 。

fileType

String

png

目標(biāo)文件的類型,有效值只支持 'jpg' 或 'png' 。

quality

Number

圖片的質(zhì)量,取值范圍為 (0, 1],不在范圍內(nèi)時(shí)當(dāng)作 1.0 處理。

success

Function

接口調(diào)用成功的回調(diào)函數(shù)

fail

Function

接口調(diào)用失敗的回調(diào)函數(shù)

complete

Function

接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

示例


圖片示例

代碼示例 1 

在開發(fā)者工具中打開

請(qǐng)使用2.7.0-beta 及其以上版本進(jìn)行預(yù)覽,正式版將在 2.6.1 以上版本支持。
<canvas canvas-id="myCanvas" />
<button type="primary" bindtap="canvasToTempFilePath">canvasToTempFilePath</button>
<image src="{{src}}"></image>

Page({
    data: {
        src: ''
    },
    onLoad() {
        const canvasContext = this.createCanvasContext('myCanvas');
        canvasContext.setFillStyle('#ff0000');
        canvasContext.arc(100, 50, 50, 0, 2 * Math.PI);
        canvasContext.fill();
        canvasContext.draw();
    },
    canvasToTempFilePath() {
        swan.canvasToTempFilePath({
            x: 0,
            y: 0,
            width: 300,
            height: 225,
            destWidth: 300,
            destHeight: 225,
            canvasId: 'myCanvas',
            fileType: 'jpg',
            quality: 1,
            success: res => {
                this.setData('src', res.tempFilePath);
                swan.showModal({
                    title: '圖片路徑',
                    content: JSON.stringify(res.tempFilePath)
                })
            }
        })
    }
})

代碼示例 2:在 draw 中使用 

在開發(fā)者工具中打開

請(qǐng)使用 2.19.0-rc 及其以上版本進(jìn)行預(yù)覽,正式版將在 2.18.1(不包括 2.18.1 )以上版本支持。
<canvas canvas-id="myCanvas" />
<image src="{{src}}"></image>

Page({
     data: {
        src: ''
    },
    onLoad() {
        const canvasContext = this.createCanvasContext('myCanvas');
        canvasContext.setFillStyle('#ff0000');
        canvasContext.arc(100, 50, 50, 0, 2 * Math.PI);
        canvasContext.fill();
        canvasContext.draw(() =>{
            swan.canvasToTempFilePath({
                x: 0,
                y: 0,
                width: 300,
                height: 225,
                destWidth: 300,
                destHeight: 225,
                canvasId: 'myCanvas',
                fileType: 'jpg',
                quality: 1,
                success: res => {
                    this.setData('src', res.tempFilePath);
                    swan.showModal({
                        title: '圖片路徑',
                        content: JSON.stringify(res.tempFilePath)
                    })
                }
            })
        });
    }
});

Bug & Tip

  • Tip:在 draw 回調(diào)里調(diào)用該方法才能保證圖片導(dǎo)出成功。
  • Tip:當(dāng) x < 0 或者 x > canvase.width 時(shí),x 會(huì)被置成 0,y 同理。
  • Tip:當(dāng) x 合法的前提下,若 x + width > canvas.width 時(shí), width 會(huì)被置成 canvas.width - x,y 同理。

錯(cuò)誤碼

Android

錯(cuò)誤碼說(shuō)明

201

解析失敗,請(qǐng)檢查調(diào)起協(xié)議是否合法。

1001

執(zhí)行失敗

iOS

錯(cuò)誤碼說(shuō)明

202

解析失敗,請(qǐng)檢查參數(shù)是否正確。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)