W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
解釋:將像素數(shù)據(jù)繪制到畫布的方法。在自定義組件下,第二個參數(shù)傳入自定義組件實例 this ,以操作組件內(nèi) <canvas> 組件。
Web 態(tài)說明:由于 Web 態(tài)遵循瀏覽器對 W3C 標(biāo)準(zhǔn)的實現(xiàn)程度,在 W3C 規(guī)范中, putImageData 方法的入?yún)⒅械?width 、 height 、 data 需要遵循 data.length === 4 * width * height 的關(guān)系,否則會進入 fail 回調(diào)。但是在百度 APP 內(nèi)的小程序環(huán)境下,客戶端不會校驗 data 的大小。為了避免 Web 態(tài)運行異常,請盡量保證入?yún)⒎蠘?biāo)準(zhǔn)。
(如果您是如代碼示例所示的用法,通過 canvasGetImageData 獲取 data 并傳入 putImageData ,則只需要保證 width 和 height 與 canvasGetImageData 中的 width 和 height 一致即可。)
Object object
屬性名 | 類型 | 必填 | 默認值 | 說明 | Web 態(tài)說明 |
---|---|---|---|---|---|
canvasId | String | 是 | 畫布標(biāo)識,傳入 | ||
x | Number | 是 | 將要被提取的圖像數(shù)據(jù)矩形區(qū)域的左上角橫坐標(biāo) | ||
y | Number | 是 | 將要被提取的圖像數(shù)據(jù)矩形區(qū)域的左上角縱坐標(biāo) | ||
width | Number | 是 | 將要被提取的圖像數(shù)據(jù)矩形區(qū)域的寬度 | ||
height | Number | 是 | 將要被提取的圖像數(shù)據(jù)矩形區(qū)域的高度 | ||
data | Uint8ClampedArray | 是 | 圖像像素點數(shù)據(jù),一維數(shù)組,每四項表示一個像素點的 rgba 。 | 數(shù)組長度必須為 4 * width * height | |
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | ||
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | ||
complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
<view class="wrap">
<canvas canvas-id="canvas1"></canvas>
<canvas canvas-id="canvas2"></canvas>
<button type="primary" bindtap="canvasPutImageData">canvasPutImageData</button>
</view>
Page({
/* eslint-enable */
onReady() {
const ctx = swan.createCanvasContext('canvas1');
ctx.setFillStyle('#0f0f0f');
ctx.arc(100, 100, 50, 0, 2 * Math.PI);
ctx.fill();
ctx.beginPath();
ctx.setStrokeStyle('#0000ff');
ctx.moveTo(90, 70);
ctx.lineTo(70, 80);
ctx.lineTo(90, 80);
ctx.closePath();
ctx.stroke();
ctx.beginPath();
ctx.setStrokeStyle('#0000ff');
ctx.moveTo(130, 70);
ctx.lineTo(110, 80);
ctx.lineTo(130, 80);
ctx.closePath();
ctx.stroke();
ctx.beginPath();
ctx.setFillStyle('#00ff00');
ctx.arc(100, 100, 20, 0, 1 * Math.PI);
ctx.fill();
ctx.setFillStyle('#00ff00');
ctx.setFontSize(12);
ctx.fillText('haha', 165, 78);
ctx.moveTo(100, 50);
ctx.setStrokeStyle('#00ff00');
ctx.bezierCurveTo(100, 25, 75, 25, 50, 50);
ctx.stroke();
ctx.moveTo(100, 50);
ctx.quadraticCurveTo(75, 25, 50, 50);
ctx.stroke();
ctx.draw();
},
canvasPutImageData() {
swan.canvasGetImageData({
canvasId: 'canvas1',
x: 0,
y: 0,
width: 200,
height: 200,
success: res => {
swan.canvasPutImageData({
canvasId: 'canvas2',
x: 0,
y: 0,
width: 200,
height: 200,
data: res.data,
success: res => {
console.log('canvasPutImageData success');
},
fail: err => {
console.log('canvasPutImageData fail', err);
}
})
},
fail: err => {
console.log('canvasGetImageData fail', err);
}
});
}
});
.wrap {
padding: 50rpx 30rpx;
}
錯誤碼 | 說明 |
---|---|
201 | 解析失敗,請檢查調(diào)起協(xié)議是否合法。 |
1001 | 執(zhí)行失敗 |
錯誤碼 | 說明 |
---|---|
202 | 解析失敗,請檢查參數(shù)是否正確。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: